Redis 常用命令速查

发布于:2026-06-11 #Redis#数据库#缓存 共 988 字 约 4 分钟

使用建议

日常使用时,可以按以下优先级记忆:

优先级内容
必须熟悉Key、String、Hash、List、Set、Sorted Set
进阶掌握事务、Lua 脚本、发布订阅、HyperLogLog、Geo
谨慎使用KEYSFLUSHDBFLUSHALLMONITORDEBUGSAVE
运维维护INFOCLIENTCONFIGSLOWLOGBGSAVEROLE

Key 操作

命令说明
TYPE key返回 key 存储的值类型
EXISTS key [key ...]判断 key 是否存在
DEL key [key ...]删除一个或多个 key
EXPIRE key seconds设置秒级过期时间
TTL key查看剩余过期时间(秒)
PERSIST key移除过期时间,持久化
RENAME key newkey修改 key 名称
KEYS pattern查找匹配模式的 key(生产慎用)
SCAN cursor [MATCH pattern] [COUNT count]渐进式遍历(推荐)
Bash
UTF-8|7 Lines|
TYPE user:1
EXISTS user:1
EXPIRE user:1 3600
TTL user:1
PERSIST user:1
DEL user:1
SCAN 0 MATCH user:* COUNT 100

String 操作

适用场景:缓存普通字符串、JSON、计数器、分布式锁等。

命令说明
SET key value [EX seconds] [NX|XX]设置值
GET key获取值
MSET key value [key value ...]批量设置
MGET key [key ...]批量获取
INCR key数值加一
INCRBY key increment数值加指定值
DECR key数值减一
STRLEN key获取字符串长度
GETRANGE key start end获取子串
APPEND key value追加字符串
Bash
UTF-8|6 Lines|
SET user:1 '{"name":"xiaoxi"}' EX 3600
GET user:1
SET lock:order:1 1 NX EX 10
INCR page:view
MSET user:1:name xiaoxi user:1:age 18
MGET user:1:name user:1:age

Hash 操作

适用场景:存储对象结构,如用户信息、商品信息。

命令说明
HSET key field value [field value ...]设置一个或多个字段
HGET key field获取指定字段
HMGET key field [field ...]批量获取字段
HGETALL key获取所有字段和值
HEXISTS key field判断字段是否存在
HDEL key field [field ...]删除字段
HLEN key获取字段数量
HKEYS key获取所有字段名
HVALS key获取所有字段值
HINCRBY key field increment字段数值自增
Bash
UTF-8|5 Lines|
HSET user:1 name xiaoxi age 18 city Hangzhou
HGET user:1 name
HMGET user:1 name age
HGETALL user:1
HINCRBY user:1 login_count 1

List 操作

适用场景:队列、消息列表、时间线。

命令说明
LPUSH key value [value ...]从头部插入
RPUSH key value [value ...]从尾部插入
LPOP key移除并返回头部元素
RPOP key移除并返回尾部元素
LRANGE key start stop获取指定范围元素
LLEN key获取列表长度
BLPOP key [key ...] timeout阻塞式弹出头部
Bash
UTF-8|5 Lines|
LPUSH queue:email task1 task2
RPOP queue:email
LRANGE queue:email 0 -1
LLEN queue:email
BRPOP queue:email 5

Set 操作

适用场景:标签、去重、共同好友、权限集合。

命令说明
SADD key member [member ...]添加成员
SREM key member [member ...]移除成员
SMEMBERS key返回所有成员
SISMEMBER key member判断成员是否存在
SCARD key获取成员数量
SINTER key [key ...]返回交集
SUNION key [key ...]返回并集
SDIFF key [key ...]返回差集
Bash
UTF-8|4 Lines|
SADD user:1:tags redis mysql backend
SISMEMBER user:1:tags redis
SMEMBERS user:1:tags
SINTER user:1:tags user:2:tags

Sorted Set 操作

适用场景:排行榜、权重队列、延时队列。

命令说明
ZADD key score member [score member ...]添加成员
ZREM key member [member ...]移除成员
ZSCORE key member获取成员分数
ZINCRBY key increment member增加分数
ZRANK key member返回排名(升序)
ZREVRANK key member返回排名(降序)
ZRANGE key start stop [WITHSCORES]按排名返回(升序)
ZREVRANGE key start stop [WITHSCORES]按排名返回(降序)
ZRANGEBYSCORE key min max按分数范围返回
Bash
UTF-8|4 Lines|
ZADD rank:article 100 article:1 200 article:2
ZREVRANGE rank:article 0 9 WITHSCORES
ZINCRBY rank:article 1 article:1
ZRANK rank:article article:1

事务操作

Bash
UTF-8|5 Lines|
WATCH stock:1
MULTI
DECR stock:1
INCR sold:1
EXEC

发布订阅

Bash
UTF-8|3 Lines|
SUBSCRIBE news
PUBLISH news "hello redis"
PSUBSCRIBE news:*

Lua 脚本

Bash
UTF-8|3 Lines|
EVAL "return redis.call('GET', KEYS[1])" 1 user:1
SCRIPT LOAD "return redis.call('GET', KEYS[1])"
EVALSHA <sha1> 1 user:1

常见场景速查

场景核心命令
缓存SET GET EXPIRE TTL
分布式锁SET key value NX EX seconds
对象缓存HSET HGET HMGET HGETALL
队列LPUSH RPOP BRPOP
标签去重SADD SISMEMBER SMEMBERS
排行榜ZADD ZREVRANGE ZINCRBY
UV 统计PFADD PFCOUNT
地理位置GEOADD GEOSEARCH GEODIST
原子逻辑EVAL EVALSHA