Redis的常用数据类型以及命令

目录

一、概述

二、数据类型

三、String

四、Hash

五、List

六、Set

[七、Sorted Set](#七、Sorted Set)

八、通用命令

一、概述

Redis 是一个开源的、高性能的 键值对 数据库,支持多种数据类型,提供丰富的操作命令,常用于缓存、消息队列、排行榜等场景。了解 Redis 的数据类型及其对应的操作命令,有助于充分发挥 Redis 的性能优势,构建高效的应用程序。

​ 本文将记录一些常用的 Redis 数据结构以及命令,便于之后使用时进行查询。

二、数据类型

Redis 提供了以下五种基本数据类型:

  1. 字符串(String)
  2. 哈希(Hash)
  3. 列表(List)
  4. 集合(Set)
  5. 有序集合(Sorted Set)

此外,Redis 还提供了以下特殊数据类型:

  • 位图(Bitmap)
  • HyperLogLog
  • 地理位置(Geo)
  • 流(Stream)
  • JSON(通过 RedisJSON 模块)

三、String

1. 简介

  • 类型描述 :字符串是 Redis 中最基本的数据类型,一个键对应一个值,值可以是字符串、数字、二进制数据等。
  • 应用场景:缓存对象、计数器、字符串操作等。

2. 常用命令

设置与获取值
  • SET key value [EX seconds] [PX milliseconds] [NX|XX]:设置指定键的值。

    示例:

    bash 复制代码
    SET mykey "Hello, Redis!"
    SET mykey "Hello, Redis!" EX 60   # 设置过期时间为60秒
    SET mykey "Hello, Redis!" NX      # 仅当键不存在时设置
  • GET key:获取指定键的值。

    示例:

    bash 复制代码
    GET mykey
批量操作
  • MSET key1 value1 key2 value2 ...:同时设置多个键的值。

    示例:

    bash 复制代码
    MSET key1 "value1" key2 "value2"
  • MGET key1 key2 ...:同时获取多个键的值。

    示例:

    bash 复制代码
    MGET key1 key2
计数器操作
  • INCR key:将键的值加 1。

    示例:

    bash 复制代码
    INCR counter   # 如果键不存在,初始值为0,再加1
  • DECR key:将键的值减 1。

    示例:

    bash 复制代码
    DECR counter
  • INCRBY key increment:将键的值增加指定的整数。

    示例:

    bash 复制代码
    INCRBY counter 5
  • DECRBY key decrement:将键的值减少指定的整数。

    示例:

    bash 复制代码
    DECRBY counter 3
字符串操作
  • APPEND key value:将指定的值追加到键的值末尾。

    示例:

    bash 复制代码
    APPEND mykey " World!"
  • STRLEN key:获取键值的字符串长度。

    示例:

    bash 复制代码
    STRLEN mykey

四、Hash

1. 简介

  • 类型描述:哈希是一个键值对集合,适合存储对象。键对应一个哈希表,哈希表内是字段(field)和值(value)的映射。
  • 应用场景:存储用户信息、商品信息等对象。

2. 常用命令

设置与获取字段值
  • HSET key field value [NX|XX]:设置哈希表中字段的值。

    示例:

    bash 复制代码
    HSET user:1001 name "Alice"
    HSET user:1001 age 30
    HSET user:1001 phone 123456  # 仅当字段不存在时设置
  • HGET key field:获取哈希表中指定字段的值。

    示例:

    bash 复制代码
    HGET user:1001 name
  • HMSET key field1 value1 field2 value2 ...:同时设置多个字段的值。

    示例:

    bash 复制代码
    HMSET user:1002 name "Bob" age 25
  • HMGET key field1 field2 ...:同时获取多个字段的值。

    示例:

    bash 复制代码
    HMGET user:1002 name age
  • HGETALL key:获取哈希表中所有的字段和值。

    示例:

    bash 复制代码
    HGETALL user:1001
字段存在性与删除
  • HEXISTS key field:检查哈希表中是否存在指定字段。

    示例:

    bash 复制代码
    HEXISTS user:1001 email
  • HDEL key field1 [field2 ...]:删除哈希表中的一个或多个字段。

    示例:

    bash 复制代码
    HDEL user:1001 age
获取字段信息
  • HLEN key:获取哈希表中字段的数量。

    示例:

    bash 复制代码
    HLEN user:1001
  • HKEYS key:获取哈希表中的所有字段名。

    示例:

    bash 复制代码
    HKEYS user:1001
  • HVALS key:获取哈希表中的所有值。

    示例:

    bash 复制代码
    HVALS user:1001
增加或减少数值字段
  • HINCRBY key field increment:将哈希表中指定字段的值增加指定整数。

    示例:

    bash 复制代码
    HINCRBY user:1001 age 1

五、List

1. 简介

  • 类型描述:列表是一个有序的字符串链表,可以在头部或尾部添加和删除元素。
  • 应用场景:消息队列、任务列表、文章评论等。

2. 常用命令

元素添加
  • LPUSH key value1 [value2 ...]:将一个或多个值插入到列表头部。

    示例:

    bash 复制代码
    LPUSH mylist "world"
    LPUSH mylist "hello"
  • RPUSH key value1 [value2 ...]:将一个或多个值插入到列表尾部。

    示例:

    bash 复制代码
    RPUSH mylist "redis"
元素获取
  • LRANGE key start stop:获取列表中指定范围的元素。

    示例:

    bash 复制代码
    LRANGE mylist 0 -1   # 获取所有元素
  • LINDEX key index:获取列表中指定索引的元素。

    示例:

    bash 复制代码
    LINDEX mylist 0      # 获取第一个元素
元素删除
  • LPOP key:移除并返回列表的头元素。

    示例:

    bash 复制代码
    LPOP mylist
  • RPOP key:移除并返回列表的尾元素。

    示例:

    bash 复制代码
    RPOP mylist
列表长度
  • LLEN key:获取列表的长度。

    示例:

    bash 复制代码
    LLEN mylist
指定位置插入
  • LINSERT key BEFORE|AFTER pivot value:在列表的指定元素前或后插入元素。

    示例:

    bash 复制代码
    LINSERT mylist BEFORE "world" "there"
修剪列表
  • LTRIM key start stop:对列表进行修剪,只保留指定范围的元素。

    示例:

    bash 复制代码
    LTRIM mylist 0 2

六、Set

1. 简介

  • 类型描述:集合是一个无序的、唯一的字符串集合。
  • 应用场景:标签、好友关系、去重操作等。

2. 常用命令

添加与获取成员
  • SADD key member1 [member2 ...]:向集合添加一个或多个成员。

    示例:

    bash 复制代码
    SADD myset "apple" "banana" "cherry"
  • SMEMBERS key:获取集合中的所有成员。

    示例:

    bash 复制代码
    SMEMBERS myset
删除成员
  • SREM key member1 [member2 ...]:移除集合中的一个或多个成员。

    示例:

    bash 复制代码
    SREM myset "banana"
成员存在性
  • SISMEMBER key member:判断成员是否存在于集合中。

    示例:

    bash 复制代码
    SISMEMBER myset "apple"
集合运算
  • SINTER key1 [key2 ...]:返回给定所有集合的交集。

    示例:

    bash 复制代码
    SINTER set1 set2
  • SUNION key1 [key2 ...]:返回所有给定集合的并集。

    示例:

    bash 复制代码
    SUNION set1 set2
  • SDIFF key1 [key2 ...]:返回第一个集合与其他集合的差集。

    示例:

    bash 复制代码
    SDIFF set1 set2
随机获取和删除成员
  • SRANDMEMBER key [count]:随机返回集合中的一个或多个成员。

    示例:

    bash 复制代码
    SRANDMEMBER myset
    SRANDMEMBER myset 2
  • SPOP key [count]:随机移除并返回集合中的一个或多个成员。

    示例:

    bash 复制代码
    SPOP myset
    SPOP myset 2

七、Sorted Set

1. 简介

  • 类型描述 :有序集合与集合类似,但每个成员都会关联一个分数(score),集合中的成员是 唯一 的,但分数可以重复。成员按分数从小到大排序。
  • 应用场景:排行榜、带权重的消息队列等。

2. 常用命令

添加与获取成员
  • ZADD key [NX|XX] [CH] [INCR] score member [score member ...]:向有序集合添加一个或多个成员,或更新已存在成员的分数。

    示例:

    bash 复制代码
    ZADD myzset 1 "one" 2 "two" 3 "three"
  • ZRANGE key start stop [WITHSCORES]:按照分数从小到大,返回指定区间内的成员。

    示例:

    bash 复制代码
    ZRANGE myzset 0 -1    # 获取所有成员
    ZRANGE myzset 0 -1 WITHSCORES   # 同时返回分数
  • ZREVRANGE key start stop [WITHSCORES]:按照分数从大到小,返回指定区间内的成员。

    示例:

    bash 复制代码
    ZREVRANGE myzset 0 -1
获取成员分数和排名
  • ZSCORE key member:获取指定成员的分数。

    示例:

    bash 复制代码
    ZSCORE myzset "one"
  • ZRANK key member:获取指定成员的排名(从 0 开始),按分数从小到大。

    示例:

    bash 复制代码
    ZRANK myzset "two"
  • ZREVRANK key member:获取指定成员的排名,按分数从大到小。

    示例:

    bash 复制代码
    ZREVRANK myzset "two"
删除成员
  • ZREM key member [member ...]:移除一个或多个成员。

    示例:

    bash 复制代码
    ZREM myzset "two"
按分数或排名范围获取成员
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]:返回指定分数范围内的成员。

    示例:

    bash 复制代码
    ZRANGEBYSCORE myzset 1 2
  • ZCOUNT key min max:返回指定分数范围内的成员数量。

    示例:

    bash 复制代码
    ZCOUNT myzset 1 2

八、通用命令

键操作命令

查找键
  • KEYS pattern:查找所有符合给定模式的键。

    • 示例:

      bash 复制代码
      KEYS user:*

      注意KEYS 命令在键数量较多时可能会阻塞服务器,生产环境中应避免使用。

键的存在性和删除
  • EXISTS key:检查给定键是否存在。

    • 示例:

      bash 复制代码
      EXISTS mykey
  • DEL key [key ...]:删除一个或多个键。

    • 示例:

      bash 复制代码
      DEL key1 key2
键的过期和持久化
  • EXPIRE key seconds:为给定键设置过期时间(秒)。

    • 示例:

      bash 复制代码
      EXPIRE mykey 60
  • TTL key:获取键的剩余生存时间(秒)。

    • 示例:

      bash 复制代码
      TTL mykey
  • PERSIST key:移除键的过期时间,使其永久存在。

    • 示例:

      bash 复制代码
      PERSIST mykey
键的类型和重命名
  • TYPE key:返回键所存储的值的类型。

    • 示例:

      bash 复制代码
      TYPE mykey
  • RENAME key newkey:重命名键。

    • 示例:

      bash 复制代码
      RENAME oldkey newkey
其他键操作
  • RANDOMKEY:随机返回一个键。

    • 示例:

      bash 复制代码
      RANDOMKEY
  • DBSIZE:返回当前数据库的键的数量。

    • 示例:

      bash 复制代码
      DBSIZE
相关推荐
Oak Zhang10 分钟前
sharding-jdbc自定义分片算法,表对应关系存储在mysql中,缓存到redis或者本地
redis·mysql·缓存
聂 可 以1 小时前
Windows环境安装MongoDB
数据库·mongodb
web前端神器1 小时前
mongodb多表查询,五个表查询
数据库·mongodb
门牙咬脆骨1 小时前
【Redis】redis缓存击穿,缓存雪崩,缓存穿透
数据库·redis·缓存
门牙咬脆骨1 小时前
【Redis】GEO数据结构
数据库·redis·缓存
wusong9991 小时前
mongoDB回顾笔记(一)
数据库·笔记·mongodb
代码小鑫1 小时前
A043-基于Spring Boot的秒杀系统设计与实现
java·开发语言·数据库·spring boot·后端·spring·毕业设计
changuncle1 小时前
MongoDB数据备份与恢复(内含工具下载、数据处理以及常见问题解决方法)
数据库·mongodb
久醉不在酒1 小时前
MySQL数据库运维及集群搭建
运维·数据库·mysql
WindFutrue2 小时前
使用Mybatis向Mysql中的插入Point类型的数据全方位解析
数据库·mysql·mybatis