Redis常用操作

阅读时长: 8 分钟 2117 字

通用命令

1. KEYS 
----------------------------------
作用:根据通配符匹配,列出所有符合条件的 key。
示例:
  KEYS user:*           # 匹配所有以 user: 开头的 key
返回值:匹配的 key 列表
注意:遍历全库,性能差,**生产环境建议使用 SCAN 命令替代**。

2. DEL  [key ...]
----------------------------------
作用:删除一个或多个指定的 key。
示例:
  DEL user:1001         # 删除 key 为 user:1001 的数据
  DEL key1 key2 key3    # 批量删除
返回值:成功删除的 key 数量

3. EXISTS  [key ...]
----------------------------------
作用:检查指定的 key 是否存在。
示例:
  EXISTS user:1001      # 判断 user:1001 是否存在
  EXISTS key1 key2      # 多个 key,返回存在的数量
返回值:存在的 key 数量(0 表示全部不存在)

4. EXPIRE  
----------------------------------
作用:为指定的 key 设置过期时间(单位:秒)。
示例:
  EXPIRE user:1001 60   # 设置 user:1001 60 秒后过期
返回值:1 表示设置成功;0 表示 key 不存在或设置失败

5. TTL 
----------------------------------
作用:查看 key 剩余的过期时间(单位:秒)。
示例:
  TTL user:1001
返回值:
  - 正数:剩余秒数
  - -1:key 存在但没有设置过期时间
  - -2:key 不存在

String类型常见命令

1. SET  
----------------------------------
作用:设置指定 key 的字符串值,如果 key 已存在则覆盖。
示例:
  SET user:1001:name "Alice"
返回值:OK(设置成功)

2. GET 
----------------------------------
作用:获取指定 key 的字符串值。
示例:
  GET user:1001:name
返回值:对应的字符串值,或 nil(key 不存在)

3. MSET     ...
----------------------------------
作用:同时设置多个 key 的值。
示例:
  MSET a 10 b 20 c 30
返回值:OK(全部设置成功)

4. MGET   ...
----------------------------------
作用:同时获取多个 key 的值。
示例:
  MGET a b c
返回值:按顺序返回对应的值,key 不存在则返回 nil

5. INCR 
----------------------------------
作用:将 key 的值加 1(必须是整数),初始值不存在视为 0。
示例:
  INCR counter
返回值:递增后的结果(整数)

6. INCRBY  
----------------------------------
作用:将 key 的值增加指定的整数值。
示例:
  INCRBY score 5
返回值:递增后的结果(整数)

7. INCRBYFLOAT  
----------------------------------
作用:将 key 的值增加指定的浮点数值。
示例:
  INCRBYFLOAT price 1.5
返回值:递增后的结果(浮点数)

8. SETNX  
----------------------------------
作用:当 key 不存在时设置 key 的值(NX = Not eXists)。
示例:
  SETNX lock "1"
返回值:
  - 1:设置成功(key 原本不存在)
  - 0:未设置(key 已存在)

9. SETEX   
----------------------------------
作用:设置 key 的值并同时指定过期时间(秒)。
示例:
  SETEX temp:code 300 "xyz123"
返回值:OK

key的层级格式

Redis 的 key 可以用 : 做分隔符(区分层级),但这只是“命名规范”,实际存储并不是按照层级结构来实现的。

举一个层级结构的例子:项目名:业务名:类型:id

Hash类型常见命令

1. HSET   
----------------------------------
作用:设置哈希表 key 中字段 field 的值。如果字段已存在则覆盖。
示例:
  HSET user:1001 name "Alice"
返回值:
  - 1:新建字段
  - 0:更新已有字段

2. HGET  
----------------------------------
作用:获取哈希表 key 中指定字段的值。
示例:
  HGET user:1001 name
返回值:字段的值,或 nil(字段不存在)

3. HMSET      ...
(⚠️ Redis 4.0 起被标记为过时,推荐用 HSET 替代)
----------------------------------
作用:同时设置多个字段的值。
示例:
  HMSET user:1001 name "Alice" age 20
返回值:OK

4. HMGET    ...
----------------------------------
作用:同时获取多个字段的值。
示例:
  HMGET user:1001 name age
返回值:按顺序返回字段值,字段不存在返回 nil

5. HGETALL 
----------------------------------
作用:获取哈希表 key 中所有字段和值(键值对形式)。
示例:
  HGETALL user:1001
返回值:一个扁平数组(field1, value1, field2, value2, ...)

6. HKEYS 
----------------------------------
作用:获取哈希表 key 中所有字段(field)。
示例:
  HKEYS user:1001
返回值:字段列表(不包含值)

7. HVALS 
----------------------------------
作用:获取哈希表 key 中所有值(value)。
示例:
  HVALS user:1001
返回值:值的列表(不包含字段)

8. HINCRBY   
----------------------------------
作用:将哈希表 key 中指定字段的整数值加上增量。
示例:
  HINCRBY user:1001 age 1
返回值:递增后的整数值

9. HSETNX   
----------------------------------
作用:仅当字段不存在时设置值(NX = Not eXists)。
示例:
  HSETNX user:1001 age 20
返回值:
  - 1:设置成功(字段不存在)
  - 0:未设置(字段已存在)

List类型常见命令

1. LPUSH   [value2 ...]
----------------------------------
作用:将一个或多个元素从左侧推入列表(即头部)。
示例:
  LPUSH mylist a b c     # 列表变成 [c, b, a]
返回值:操作后列表的长度

2. LPOP 
----------------------------------
作用:从左侧弹出(移除)并返回列表的第一个元素。
示例:
  LPOP mylist
返回值:被弹出的元素,或 nil(列表为空)

3. RPUSH   [value2 ...]
----------------------------------
作用:将一个或多个元素从右侧推入列表(即尾部)。
示例:
  RPUSH mylist x y z     # 列表变成 [..., x, y, z]
返回值:操作后列表的长度

4. RPOP 
----------------------------------
作用:从右侧弹出(移除)并返回列表的最后一个元素。
示例:
  RPOP mylist
返回值:被弹出的元素,或 nil(列表为空)

5. LRANGE   
----------------------------------
作用:获取列表指定范围内的元素(闭区间,支持负数索引)。
示例:
  LRANGE mylist 0 2      # 获取索引 0 到 2 的元素
  LRANGE mylist 0 -1     # 获取整个列表
返回值:元素列表

6. BLPOP  [key2 ...] 
----------------------------------
作用:从左侧弹出元素,若列表为空则阻塞等待,直到超时或有值。
示例:
  BLPOP mylist 5         # 最多等待 5 秒直到有元素可弹出
返回值:一个包含 [key, value] 的数组,或 nil(超时)

7. BRPOP  [key2 ...] 
----------------------------------
作用:从右侧弹出元素,若列表为空则阻塞等待,直到超时或有值。
示例:
  BRPOP mylist 5
返回值:一个包含 [key, value] 的数组,或 nil(超时)

Set类型常见命令

1. SADD   [member2 ...]
----------------------------------
作用:向集合添加一个或多个成员(去重,不允许重复元素)。
示例:
  SADD myset a b c
返回值:成功添加的元素数量(已存在的不计入)

2. SREM   [member2 ...]
----------------------------------
作用:从集合中移除一个或多个指定成员。
示例:
  SREM myset a b
返回值:成功移除的成员数量

3. SCARD 
----------------------------------
作用:获取集合中元素的数量。
示例:
  SCARD myset
返回值:集合的大小(元素个数)

4. SISMEMBER  
----------------------------------
作用:判断某个值是否是集合的成员。
示例:
  SISMEMBER myset a
返回值:
  - 1:是成员
  - 0:不是成员

5. SMEMBERS 
----------------------------------
作用:返回集合中的所有元素。
示例:
  SMEMBERS myset
返回值:元素列表(无序)

6. SINTER   [...]
----------------------------------
作用:返回所有给定集合的交集。
示例:
  SINTER set1 set2
返回值:交集成员列表(仅在两个集合中都存在的元素)

7. SDIFF   [...]
----------------------------------
作用:返回在 key1 中但不在其他集合中的元素(差集)。
示例:
  SDIFF set1 set2
返回值:差集成员列表(存在于 set1,但不在 set2 中)

8. SUNION   [...]
----------------------------------
作用:返回所有给定集合的并集。
示例:
  SUNION set1 set2
返回值:并集成员列表(所有唯一元素)

SortedSet类型常见命令

1. ZADD    [score2 member2 ...]
----------------------------------
作用:向有序集合添加一个或多个成员,并设置分数。
示例:
  ZADD leaderboard 100 user1 200 user2
返回值:成功添加的新成员数量(已存在的更新分数但不计入)

2. ZREM   [member2 ...]
----------------------------------
作用:移除一个或多个成员。
示例:
  ZREM leaderboard user1
返回值:成功移除的成员数量

3. ZSCORE  
----------------------------------
作用:获取指定成员的分数。
示例:
  ZSCORE leaderboard user2
返回值:分数(字符串类型),或 nil(成员不存在)

4. ZRANK  
----------------------------------
作用:返回指定成员的排名(从小到大,0 开始)。
示例:
  ZRANK leaderboard user2
返回值:排名索引,或 nil(成员不存在)

5. ZCARD 
----------------------------------
作用:返回有序集合中的成员数量。
示例:
  ZCARD leaderboard
返回值:成员总数

6. ZCOUNT   
----------------------------------
作用:统计分数在指定范围内的成员数量。
示例:
  ZCOUNT leaderboard 100 200
返回值:符合条件的成员数量

7. ZINCRBY   
----------------------------------
作用:为指定成员的分数增加指定值(可为负)。
示例:
  ZINCRBY leaderboard 10 user2
返回值:增加后的分数

8. ZRANGE    [WITHSCORES]
----------------------------------
作用:按索引范围获取成员(从低分到高分)。
示例:
  ZRANGE leaderboard 0 2
  ZRANGE leaderboard 0 2 WITHSCORES
返回值:成员列表,或成员+分数列表(如果加了 WITHSCORES)

9. ZRANGEBYSCORE    [WITHSCORES]
----------------------------------
作用:按分数范围获取成员(可指定区间范围)。
示例:
  ZRANGEBYSCORE leaderboard 100 200
返回值:符合条件的成员列表,默认按分数升序排列

10. ZINTER    ... [AGGREGATE SUM|MIN|MAX]
(Redis 6.2 起支持简化命令:ZINTERSTORE destination key1 key2 ...)
----------------------------------
作用:求多个有序集合的交集,可合并分数。
示例:
  ZINTER 2 zset1 zset2
返回值:交集中成员及其计算后的分数

11. ZDIFF    ...
(Redis 6.2+ 支持)
----------------------------------
作用:返回第一个集合中存在、其余集合中不存在的成员。
示例:
  ZDIFF 2 zset1 zset2
返回值:差集成员列表(不含分数)

12. ZUNION    ... [AGGREGATE SUM|MIN|MAX]
(Redis 6.2 起支持简化命令:ZUNIONSTORE destination key1 key2 ...)
----------------------------------
作用:求多个有序集合的并集,可合并分数。
示例:
  ZUNION 2 zset1 zset2
返回值:并集中所有成员及其合并分数
本网站已运行: 计算中...
备案 赣公网安备36072502000191 | 赣ICP备2024040374号
使用 Hugo 构建 · 主题 Stack 由 Jimmy 设计