Redis 命令速查:按数据类型和缓存场景查最常用命令
按字符串、哈希、列表、集合、有序集合分类整理 Redis 常用命令,配过期、发布订阅和缓存场景的真实例子,帮你在 redis-cli 里直接对着敲。
Redis 命令速查:按数据类型和缓存场景查最常用命令
Redis 命令多到记不住,真正的麻烦不是命令本身,而是「这个场景到底该用哪个数据类型、哪条命令」。做计数用字符串还是哈希,做队列用列表还是 Streams,做排行榜用有序集合的哪个变体,记混一个就可能在生产上多绕一圈。这篇按数据类型和场景把最常敲的命令串一遍,你可以直接对着 Redis 速查表边查边粘。
字符串:计数器和带过期的缓存
字符串是最基础的类型,但用法远不止存个值。SET key value 写入,GET key 读取,DEL key 删除。计数场景用 INCR key 和 DECR key,它们是原子的,多个客户端并发自增不会丢。
要点在于带过期写缓存。下面这条是日常最常敲的一行:
SET session:abc123 "{...}" EX 60
EX 60 表示 60 秒后自动过期。这里有个坑:如果之后只写 SET session:abc123 "新值" 不带 EX,原本的 TTL 会被直接抹掉,key 变成永不过期。要保留过期时间,用 SET key value KEEPTTL,或者每次都重新写上 EX。
哈希:把一个对象的多个字段存在一起
哈希适合存「一个对象的多个字段」,比如一个用户的昵称、头像、积分。HSET user:1 name 李雷 score 100 一次写多个字段,HGET user:1 name 读单个,HMGET user:1 name score 批量读。每用户的多维计数用 HINCRBY user:1 score 5。
注意 HGETALL 只在小哈希上用。一个涨到上百万 field 的哈希,HGETALL 一次返回几 MB,还会阻塞事件循环。这种情况改用带 COUNT 的 HSCAN,或者只 HMGET 你真正要的字段。
列表:当 FIFO 队列用
列表两头都能进出,天然是队列。LPUSH queue task1 从左边推入,RPOP queue 从右边弹出,配起来就是先进先出。LRANGE queue 0 -1 看全部元素,LLEN queue 看长度。
做消费者时用 BLPOP queue 5:队列为空就阻塞最多 5 秒,有任务立刻返回,不用自己轮询空转。
集合与有序集合:去重判断和排行榜
集合存不重复的值。判断「这个用户在线吗」就是 SADD online:users 1001 加进去、SISMEMBER online:users 1001 查在不在。SINTER a b 求交集、SUNION a b 求并集、SDIFF a b 求差集,做共同好友、标签匹配很顺手。
有序集合在集合基础上给每个成员一个分数,自动按分数排序,是排行榜的标准答案。ZADD rank 100 player1 加成员加分数,ZINCRBY rank 5 player1 加分,ZRANGE rank 0 9 WITHSCORES 取前十名带分数。把分数设成时间戳,ZRANGEBYSCORE jobs -inf <现在> 就能拿出所有到点该执行的定时任务。
过期与发布订阅
过期相关三条最常用:EXPIRE key 60 给已有 key 设 60 秒过期,TTL key 查剩余秒数,PERSIST key 取消过期变永久。
发布订阅是 fire-and-forget 的广播:SUBSCRIBE channel 订阅,PUBLISH channel "msg" 发布,PSUBSCRIBE news.* 按模式订阅。它适合实时在线状态、缓存失效广播这种「丢一条没事」的场景。关键的坑是:发布时不在线的订阅者永远收不到这条消息,没有回放。要求「这条不能丢」就得换成 Streams。
一次真实排查
我之前接手一个服务,Redis 内存莫名其妙涨到接近 maxmemory。先 INFO memory 看 mem_fragmentation_ratio,发现是 1.7,碎片偏高,CONFIG SET activedefrag yes 开主动整理压下去一部分。再用 redis-cli --bigkeys 扫,揪出一个被当垃圾桶用的大哈希,迁移走之后内存回到正常水位。这套排查路径速查表里都有,对照着敲比凭记忆翻文档快太多。
更进阶的缓存淘汰、Streams 消费组、Lua 脚本和事务,我也整理进了同一份速查表。如果你这套技术栈还要碰数据库,可以顺手看 PostgreSQL 速查表;要跑容器和编排,Docker 速查表和 kubectl 速查表能接上整条链路。
把命令按数据类型记,再按场景查,比死背一长串命令名管用得多。下次卡在「这个该用哪条」的时候,先想清楚是字符串、哈希、列表、集合还是有序集合,答案基本就出来了。
Made by Toolora · Updated 2026-06-13