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 表示降序排名第二)
相关推荐
SelectDB技术团队6 分钟前
Apache Doris 基于 Lance 的向量检索深度解析
数据库·数据仓库·数据分析·湖仓一体·apache doris·lakehouse·多模湖仓
这个DBA有点耶22 分钟前
从INDEX到JOIN_ORDER:MySQL 8.0 Hint语法体系与五类实战场景
数据库·mysql·架构
数字新视界26 分钟前
机房动环监控助力智能管理
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
梅菲塔亚30 分钟前
博客_Redis入门到实战
数据库·redis·缓存
abcyuu34 分钟前
用友 U8 Cloud 生产制造模块深度解析:从 BOM 建立到成本核算的技术实现
前端·数据库·制造
夜雪一千36 分钟前
MySQL 的ID用什么数据类型更好?主键ID选型实战
数据库·mysql
蓝胖的四次元口袋43 分钟前
Redis 知识梳理(3)
数据库·redis·缓存
一铭111991 小时前
海豹办公 1.9.15 跨端办公软件实践 文档兼容 Access 数据库与移动 WebView 排错
android·数据库·electron·开源软件·access
Lynne3091 小时前
TSN 在变电站自动化通信网络升级中的应用价值与技术挑战
服务器·网络·数据库
弈栈录1 小时前
用户、会话与消息表应该如何设计
数据库·后端