Redis 常用命令速查
发布于:2026-06-11 #Redis#数据库#缓存
共 988 字
约 4 分钟
使用建议
日常使用时,可以按以下优先级记忆:
| 优先级 | 内容 |
|---|
| 必须熟悉 | Key、String、Hash、List、Set、Sorted Set |
| 进阶掌握 | 事务、Lua 脚本、发布订阅、HyperLogLog、Geo |
| 谨慎使用 | KEYS、FLUSHDB、FLUSHALL、MONITOR、DEBUG、SAVE |
| 运维维护 | INFO、CLIENT、CONFIG、SLOWLOG、BGSAVE、ROLE |
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] | 渐进式遍历(推荐) |
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 | 追加字符串 |
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 | 字段数值自增 |
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 | 阻塞式弹出头部 |
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 ...] | 返回差集 |
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 | 按分数范围返回 |
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
事务操作
WATCH stock:1
MULTI
DECR stock:1
INCR sold:1
EXEC
发布订阅
SUBSCRIBE news
PUBLISH news "hello redis"
PSUBSCRIBE news:*
Lua 脚本
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 |