Redis 核心命令速查表

一、通用命令(全局操作)

命令 语法 功能描述 时间复杂度 示例
KEYS KEYS pattern 匹配所有符合样式的键(支持 * ? [] 等通配符) O(N) KEYS user:*(匹配所有用户相关键)KEYS a??(匹配长度为 3、以 a 开头的键)
EXISTS EXISTS key [key...] 判断键是否存在,返回存在的键数量 O(1) EXISTS user:1001(返回 1 表示存在,0 表示不存在)EXISTS key1 key2(返回 2 表示两个键都存在)
DEL DEL key [key...] 删除指定键,返回删除成功的数量 O(1) DEL user:1001(删除单个键)DEL key1 key2(批量删除键)
EXPIRE EXPIRE key seconds 为键设置秒级过期时间 O(1) EXPIRE user:1001 3600(1 小时后过期)
PEXPIRE PEXPIRE key milliseconds 为键设置毫秒级过期时间 O(1) PEXPIRE user:1001 1000(1 秒后过期)
TTL TTL key 查看键的剩余过期时间(秒级),-1 表示永不过期,-2 表示键不存在 O(1) TTL user:1001(返回 3500 表示剩余 3500 秒)
PTTL PTTL key 查看键的剩余过期时间(毫秒级) O(1) PTTL user:1001(返回 3500000 表示剩余 3500 秒)
TYPE TYPE key 返回键对应的数据类型(string/list/hash/set/zset) O(1) TYPE user:1001(返回 "hash" 表示该键是哈希类型)
SCAN SCAN cursor [MATCH pattern] [COUNT count] 渐进式遍历键,避免阻塞 Redis(替代 KEYS) O(1) SCAN 0 MATCH user:* COUNT 10(从游标 0 开始,匹配用户键,每次返回 10 个)

二、字符串(String)

Redis 最基础的类型,可存储文本、数字、二进制数据(最大 512MB)。

命令 语法 功能描述 时间复杂度 示例
SET **`SET key value [EX seconds PX ms] [NX XX]`** 设置键值,支持过期时间和条件(NX:键不存在才设置,XX:键存在才设置)
GET GET key 获取键对应的值,键不存在返回 nil O(1) GET user:name(返回 "Alice")
MSET MSET key1 value1 key2 value2... 批量设置键值 O (N)(N 为键数量) MSET user:1001:name "Alice" user:1001:age 25
MGET MGET key1 key2... 批量获取键值 O(N) MGET user:1001:name user:1001:age(返回 ["Alice", "25"])
INCR INCR key 键值为数字时,自增 1(原子操作) O(1) INCR article:1001:view(文章阅读量 +1)
DECR DECR key 键值为数字时,自减 1 O(1) DECR stock:iphone(库存 -1)
INCRBY INCRBY key increment 键值为数字时,自增指定值 O(1) INCRBY user:1001:score 10(用户分数 +10)
DECRBY DECRBY key decrement 键值为数字时,自减指定值 O(1) DECRBY stock:iphone 5(库存 -5)
APPEND APPEND key value 追加字符串到现有值末尾,键不存在则创建 O (1)(追加短字符串时) APPEND user:desc "喜欢旅行"(在用户描述后追加文本)
STRLEN STRLEN key 获取字符串长度 O(1) STRLEN user:name(返回 5 表示 "Alice" 长度为 5)

三、哈希(Hash)

适合存储对象(如用户信息、商品详情),键值对的 "嵌套结构"(field-value 映射)。

命令 语法 功能描述 时间复杂度 示例
HSET HSET key field value [field value...] 设置哈希的字段值,批量设置多个字段 O (1)(单个字段)/ O (N)(多个字段) HSET user:1001 name "Alice" age 25(设置用户姓名和年龄)
HGET HGET key field 获取哈希指定字段的值 O(1) HGET user:1001 name(返回 "Alice")
HMSET HMSET key field1 value1 field2 value2... 批量设置哈希字段(同 HSET 批量模式) O(N) HMSET user:1001 city "Beijing" gender "female"
HMGET HMGET key field1 field2... 批量获取哈希字段值 O(N) HMGET user:1001 name age city(返回 ["Alice", "25", "Beijing"])
HGETALL HGETALL key 获取哈希所有字段和值(大哈希慎用,可能阻塞) O (N)(N 为字段数) HGETALL user:1001(返回所有用户信息字段)
HEXISTS HEXISTS key field 判断哈希字段是否存在 O(1) HEXISTS user:1001 email(返回 0 表示 email 字段不存在)
HDEL HDEL key field [field...] 删除哈希指定字段 O (1)(单个字段)/ O (N)(多个字段) HDEL user:1001 age(删除用户年龄字段)
HKEYS HKEYS key 获取哈希所有字段名 O(N) HKEYS user:1001(返回 ["name", "age", "city"])
HVALS HVALS key 获取哈希所有字段值 O(N) HVALS user:1001(返回 ["Alice", "25", "Beijing"])
HLEN HLEN key 获取哈希字段数量 O(1) HLEN user:1001(返回 3 表示有 3 个字段)

四、列表(List)

有序、可重复的字符串集合,支持两端插入 / 弹出,适合实现队列、栈、时间轴。

命令 语法 功能描述 时间复杂度 示例
LPUSH LPUSH key element [element...] 从列表左侧(头部)插入元素 O (1)(单个元素)/ O (N)(多个元素) LPUSH user:1001:msgs "msg1" "msg2"(消息从头部插入)
RPUSH RPUSH key element [element...] 从列表右侧(尾部)插入元素 O (1)(单个元素)/ O (N)(多个元素) RPUSH user:1001:msgs "msg3"(消息从尾部插入)
LPOP LPOP key 从列表左侧弹出元素(删除并返回) O(1) LPOP user:1001:msgs(返回 "msg2",列表移除该元素)
RPOP RPOP key 从列表右侧弹出元素 O(1) RPOP user:1001:msgs(返回 "msg3")
LRANGE LRANGE key start stop 获取列表指定范围元素(0 开头,-1 表示最后一个元素) O (N)(N 为元素数量) LRANGE user:1001:msgs 0 -1(返回所有消息)LRANGE user:1001:msgs 0 1(返回前 2 条消息)
LLEN LLEN key 获取列表长度 O(1) LLEN user:1001:msgs(返回 3 表示有 3 条消息)
LINDEX LINDEX key index 获取列表指定索引的元素 O(N) LINDEX user:1001:msgs 1(返回索引 1 对应的元素)
BLPOP BLPOP key [key...] timeout 阻塞式从左侧弹出元素(列表为空时阻塞,超时后返回 nil) O(1) BLPOP user:1001:msgs 10(10 秒内无元素则返回 nil)
BRPOP BRPOP key [key...] timeout 阻塞式从右侧弹出元素 O(1) BRPOP user:1001:msgs 10

五、集合(Set)

无序、不可重复的字符串集合,支持交集、并集、差集运算,适合标签、好友关系。

命令 语法 功能描述 时间复杂度 示例
SADD SADD key member [member...] 向集合添加元素(重复元素会忽略) O (1)(单个元素)/ O (N)(多个元素) SADD user:1001:tags "travel" "reading"(给用户添加标签)
SMEMBERS SMEMBERS key 获取集合所有元素 O(N) SMEMBERS user:1001:tags(返回 ["travel", "reading"])
SISMEMBER SISMEMBER key member 判断元素是否在集合中 O(1) SISMEMBER user:1001:tags "sports"(返回 0 表示不在集合中)
SREM SREM key member [member...] 从集合删除元素 O (1)(单个元素)/ O (N)(多个元素) SREM user:1001:tags "reading"(删除用户标签)
SCARD SCARD key 获取集合元素数量 O(1) SCARD user:1001:tags(返回 1 表示剩余 1 个标签)
SINTER SINTER key1 key2 [key...] 计算多个集合的交集(共同元素) O (N*M)(N 为最小集合大小) SINTER user:1001:tags user:1002:tags(获取两个用户的共同标签)
SUNION SUNION key1 key2 [key...] 计算多个集合的并集(所有元素去重) O (N)(N 为总元素数) SUNION user:1001:tags user:1002:tags(合并两个用户的标签)
SDIFF SDIFF key1 key2 [key...] 计算集合的差集(key1 有、其他集合没有的元素) O(N) SDIFF user:1001:tags user:1002:tags(用户 1 独有的标签)
SPOP SPOP key [count] 随机删除并返回集合元素 O (N)(N 为 count 数量) SPOP user:1001:tags 1(随机删除 1 个标签)

六、有序集合(ZSet)

有序、不可重复的字符串集合,每个元素关联一个 "分数(score)",按分数排序,适合排行榜、优先级队列。

命令 语法 功能描述 时间复杂度 示例
ZADD ZADD key score member [score member...] 向有序集合添加元素(按 score 排序) O (logN)(N 为元素数) ZADD rank:article 100 "article:1001" 200 "article:1002"(添加文章及阅读量分数)
ZRANGE ZRANGE key start stop [WITHSCORES] 按 score 升序获取指定范围元素(WITHSCORES 显示分数) O (logN + M)(M 为返回元素数) ZRANGE rank:article 0 -1 WITHSCORES(升序显示所有文章及分数)
ZREVRANGE ZREVRANGE key start stop [WITHSCORES] 按 score 降序获取指定范围元素(适合排行榜) O(logN + M) ZREVRANGE rank:article 0 9 WITHSCORES(显示 Top 10 文章)
ZSCORE ZSCORE key member 获取元素对应的 score O(logN) ZSCORE rank:article "article:1001"(返回 100)
ZINCRBY ZINCRBY key increment member 元素 score 自增指定值 O(logN) ZINCRBY rank:article 10 "article:1001"(文章阅读量 +10)
ZREM ZREM key member [member...] 从有序集合删除元素 O (logN)(单个元素)/ O (N*logN)(多个元素) ZREM rank:article "article:1001"(删除文章排名)
ZCOUNT ZCOUNT key min max 统计 score 在 [min, max] 范围内的元素数量 O(logN) ZCOUNT rank:article 100 200(统计分数 100~200 的文章数)
ZRANK ZRANK key member 按 score 升序获取元素排名(从 0 开始) O(logN) ZRANK rank:article "article:1001"(返回 0 表示排名第一)
ZREVRANK ZREVRANK key member 按 score 降序获取元素排名 O(logN) ZREVRANK rank:article "article:1001"(返回 1 表示降序排名第二)
相关推荐
喵行星2 小时前
MySQL XtraBackup 使用文档(全量 + 增量备份与恢复)
数据库·mysql·adb
苦学编程的谢3 小时前
Redis_11_类型补充+命令补充+RESP
数据库·redis·缓存
一 乐3 小时前
社区养老保障|智慧养老|基于springboot+小程序社区养老保障系统设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·小程序
hzk的学习笔记3 小时前
Redisson 和 Jedis 的区别
数据库·redis·缓存
我想吹水3 小时前
Django 测试样例
数据库·django·sqlite
郏国上3 小时前
遍历访问阿里云节点下的所有文件信息并写入excel文件
数据库·mongodb·阿里云·excel
小光学长3 小时前
基于Web的课前问题导入系统pn8lj4ii(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·前端·数据库
无心水3 小时前
【中间件:Redis】5、Redis分布式锁实战:从基础实现到Redisson高级版(避坑指南)
redis·分布式·中间件·redisson·后端面试·redis分布式锁·分布式系统
EasyCVR4 小时前
视频汇聚平台EasyCVR:构建通信基站“可视、可管、可控”的智慧安防体系
服务器·数据库·音视频