通用命令
1. KEYS <pattern>
----------------------------------
作用:根据通配符匹配,列出所有符合条件的 key。
示例:
KEYS user:* # 匹配所有以 user: 开头的 key
返回值:匹配的 key 列表
注意:遍历全库,性能差,**生产环境建议使用 SCAN 命令替代**。
2. DEL <key> [key ...]
----------------------------------
作用:删除一个或多个指定的 key。
示例:
DEL user:1001 # 删除 key 为 user:1001 的数据
DEL key1 key2 key3 # 批量删除
返回值:成功删除的 key 数量
3. EXISTS <key> [key ...]
----------------------------------
作用:检查指定的 key 是否存在。
示例:
EXISTS user:1001 # 判断 user:1001 是否存在
EXISTS key1 key2 # 多个 key,返回存在的数量
返回值:存在的 key 数量(0 表示全部不存在)
4. EXPIRE <key> <seconds>
----------------------------------
作用:为指定的 key 设置过期时间(单位:秒)。
示例:
EXPIRE user:1001 60 # 设置 user:1001 60 秒后过期
返回值:1 表示设置成功;0 表示 key 不存在或设置失败
5. TTL <key>
----------------------------------
作用:查看 key 剩余的过期时间(单位:秒)。
示例:
TTL user:1001
返回值:
- 正数:剩余秒数
- -1:key 存在但没有设置过期时间
- -2:key 不存在
String类型常见命令
1. SET <key> <value>
----------------------------------
作用:设置指定 key 的字符串值,如果 key 已存在则覆盖。
示例:
SET user:1001:name "Alice"
返回值:OK(设置成功)
2. GET <key>
----------------------------------
作用:获取指定 key 的字符串值。
示例:
GET user:1001:name
返回值:对应的字符串值,或 nil(key 不存在)
3. MSET <key1> <value1> <key2> <value2> ...
----------------------------------
作用:同时设置多个 key 的值。
示例:
MSET a 10 b 20 c 30
返回值:OK(全部设置成功)
4. MGET <key1> <key2> ...
----------------------------------
作用:同时获取多个 key 的值。
示例:
MGET a b c
返回值:按顺序返回对应的值,key 不存在则返回 nil
5. INCR <key>
----------------------------------
作用:将 key 的值加 1(必须是整数),初始值不存在视为 0。
示例:
INCR counter
返回值:递增后的结果(整数)
6. INCRBY <key> <increment>
----------------------------------
作用:将 key 的值增加指定的整数值。
示例:
INCRBY score 5
返回值:递增后的结果(整数)
7. INCRBYFLOAT <key> <increment>
----------------------------------
作用:将 key 的值增加指定的浮点数值。
示例:
INCRBYFLOAT price 1.5
返回值:递增后的结果(浮点数)
8. SETNX <key> <value>
----------------------------------
作用:当 key 不存在时设置 key 的值(NX = Not eXists)。
示例:
SETNX lock "1"
返回值:
- 1:设置成功(key 原本不存在)
- 0:未设置(key 已存在)
9. SETEX <key> <seconds> <value>
----------------------------------
作用:设置 key 的值并同时指定过期时间(秒)。
示例:
SETEX temp:code 300 "xyz123"
返回值:OK
key的层级格式
Redis 的 key 可以用 :
做分隔符(区分层级),但这只是“命名规范”,实际存储并不是按照层级结构来实现的。
举一个层级结构的例子:项目名:业务名:类型:id
Hash类型常见命令
1. HSET <key> <field> <value>
----------------------------------
作用:设置哈希表 key 中字段 field 的值。如果字段已存在则覆盖。
示例:
HSET user:1001 name "Alice"
返回值:
- 1:新建字段
- 0:更新已有字段
2. HGET <key> <field>
----------------------------------
作用:获取哈希表 key 中指定字段的值。
示例:
HGET user:1001 name
返回值:字段的值,或 nil(字段不存在)
3. HMSET <key> <field1> <value1> <field2> <value2> ...
(⚠️ Redis 4.0 起被标记为过时,推荐用 HSET 替代)
----------------------------------
作用:同时设置多个字段的值。
示例:
HMSET user:1001 name "Alice" age 20
返回值:OK
4. HMGET <key> <field1> <field2> ...
----------------------------------
作用:同时获取多个字段的值。
示例:
HMGET user:1001 name age
返回值:按顺序返回字段值,字段不存在返回 nil
5. HGETALL <key>
----------------------------------
作用:获取哈希表 key 中所有字段和值(键值对形式)。
示例:
HGETALL user:1001
返回值:一个扁平数组(field1, value1, field2, value2, ...)
6. HKEYS <key>
----------------------------------
作用:获取哈希表 key 中所有字段(field)。
示例:
HKEYS user:1001
返回值:字段列表(不包含值)
7. HVALS <key>
----------------------------------
作用:获取哈希表 key 中所有值(value)。
示例:
HVALS user:1001
返回值:值的列表(不包含字段)
8. HINCRBY <key> <field> <increment>
----------------------------------
作用:将哈希表 key 中指定字段的整数值加上增量。
示例:
HINCRBY user:1001 age 1
返回值:递增后的整数值
9. HSETNX <key> <field> <value>
----------------------------------
作用:仅当字段不存在时设置值(NX = Not eXists)。
示例:
HSETNX user:1001 age 20
返回值:
- 1:设置成功(字段不存在)
- 0:未设置(字段已存在)
List类型常见命令
1. LPUSH <key> <value1> [value2 ...]
----------------------------------
作用:将一个或多个元素从左侧推入列表(即头部)。
示例:
LPUSH mylist a b c # 列表变成 [c, b, a]
返回值:操作后列表的长度
2. LPOP <key>
----------------------------------
作用:从左侧弹出(移除)并返回列表的第一个元素。
示例:
LPOP mylist
返回值:被弹出的元素,或 nil(列表为空)
3. RPUSH <key> <value1> [value2 ...]
----------------------------------
作用:将一个或多个元素从右侧推入列表(即尾部)。
示例:
RPUSH mylist x y z # 列表变成 [..., x, y, z]
返回值:操作后列表的长度
4. RPOP <key>
----------------------------------
作用:从右侧弹出(移除)并返回列表的最后一个元素。
示例:
RPOP mylist
返回值:被弹出的元素,或 nil(列表为空)
5. LRANGE <key> <start> <stop>
----------------------------------
作用:获取列表指定范围内的元素(闭区间,支持负数索引)。
示例:
LRANGE mylist 0 2 # 获取索引 0 到 2 的元素
LRANGE mylist 0 -1 # 获取整个列表
返回值:元素列表
6. BLPOP <key1> [key2 ...] <timeout>
----------------------------------
作用:从左侧弹出元素,若列表为空则阻塞等待,直到超时或有值。
示例:
BLPOP mylist 5 # 最多等待 5 秒直到有元素可弹出
返回值:一个包含 [key, value] 的数组,或 nil(超时)
7. BRPOP <key1> [key2 ...] <timeout>
----------------------------------
作用:从右侧弹出元素,若列表为空则阻塞等待,直到超时或有值。
示例:
BRPOP mylist 5
返回值:一个包含 [key, value] 的数组,或 nil(超时)
Set类型常见命令
1. SADD <key> <member1> [member2 ...]
----------------------------------
作用:向集合添加一个或多个成员(去重,不允许重复元素)。
示例:
SADD myset a b c
返回值:成功添加的元素数量(已存在的不计入)
2. SREM <key> <member1> [member2 ...]
----------------------------------
作用:从集合中移除一个或多个指定成员。
示例:
SREM myset a b
返回值:成功移除的成员数量
3. SCARD <key>
----------------------------------
作用:获取集合中元素的数量。
示例:
SCARD myset
返回值:集合的大小(元素个数)
4. SISMEMBER <key> <member>
----------------------------------
作用:判断某个值是否是集合的成员。
示例:
SISMEMBER myset a
返回值:
- 1:是成员
- 0:不是成员
5. SMEMBERS <key>
----------------------------------
作用:返回集合中的所有元素。
示例:
SMEMBERS myset
返回值:元素列表(无序)
6. SINTER <key1> <key2> [...]
----------------------------------
作用:返回所有给定集合的交集。
示例:
SINTER set1 set2
返回值:交集成员列表(仅在两个集合中都存在的元素)
7. SDIFF <key1> <key2> [...]
----------------------------------
作用:返回在 key1 中但不在其他集合中的元素(差集)。
示例:
SDIFF set1 set2
返回值:差集成员列表(存在于 set1,但不在 set2 中)
8. SUNION <key1> <key2> [...]
----------------------------------
作用:返回所有给定集合的并集。
示例:
SUNION set1 set2
返回值:并集成员列表(所有唯一元素)
SortedSet类型常见命令
1. ZADD <key> <score1> <member1> [score2 member2 ...]
----------------------------------
作用:向有序集合添加一个或多个成员,并设置分数。
示例:
ZADD leaderboard 100 user1 200 user2
返回值:成功添加的新成员数量(已存在的更新分数但不计入)
2. ZREM <key> <member1> [member2 ...]
----------------------------------
作用:移除一个或多个成员。
示例:
ZREM leaderboard user1
返回值:成功移除的成员数量
3. ZSCORE <key> <member>
----------------------------------
作用:获取指定成员的分数。
示例:
ZSCORE leaderboard user2
返回值:分数(字符串类型),或 nil(成员不存在)
4. ZRANK <key> <member>
----------------------------------
作用:返回指定成员的排名(从小到大,0 开始)。
示例:
ZRANK leaderboard user2
返回值:排名索引,或 nil(成员不存在)
5. ZCARD <key>
----------------------------------
作用:返回有序集合中的成员数量。
示例:
ZCARD leaderboard
返回值:成员总数
6. ZCOUNT <key> <min> <max>
----------------------------------
作用:统计分数在指定范围内的成员数量。
示例:
ZCOUNT leaderboard 100 200
返回值:符合条件的成员数量
7. ZINCRBY <key> <increment> <member>
----------------------------------
作用:为指定成员的分数增加指定值(可为负)。
示例:
ZINCRBY leaderboard 10 user2
返回值:增加后的分数
8. ZRANGE <key> <start> <stop> [WITHSCORES]
----------------------------------
作用:按索引范围获取成员(从低分到高分)。
示例:
ZRANGE leaderboard 0 2
ZRANGE leaderboard 0 2 WITHSCORES
返回值:成员列表,或成员+分数列表(如果加了 WITHSCORES)
9. ZRANGEBYSCORE <key> <min> <max> [WITHSCORES]
----------------------------------
作用:按分数范围获取成员(可指定区间范围)。
示例:
ZRANGEBYSCORE leaderboard 100 200
返回值:符合条件的成员列表,默认按分数升序排列
10. ZINTER <numkeys> <key1> <key2> ... [AGGREGATE SUM|MIN|MAX]
(Redis 6.2 起支持简化命令:ZINTERSTORE destination key1 key2 ...)
----------------------------------
作用:求多个有序集合的交集,可合并分数。
示例:
ZINTER 2 zset1 zset2
返回值:交集中成员及其计算后的分数
11. ZDIFF <numkeys> <key1> <key2> ...
(Redis 6.2+ 支持)
----------------------------------
作用:返回第一个集合中存在、其余集合中不存在的成员。
示例:
ZDIFF 2 zset1 zset2
返回值:差集成员列表(不含分数)
12. ZUNION <numkeys> <key1> <key2> ... [AGGREGATE SUM|MIN|MAX]
(Redis 6.2 起支持简化命令:ZUNIONSTORE destination key1 key2 ...)
----------------------------------
作用:求多个有序集合的并集,可合并分数。
示例:
ZUNION 2 zset1 zset2
返回值:并集中所有成员及其合并分数