一、统一 Redis Key 命名规范
1. 推荐命名格式
{project}:{module}:{biz}:{type}:{id}
各部分含义
| 字段 |
含义 |
示例 |
| project |
项目名 |
wimp / mall |
| module |
模块名 |
user / order / device |
| biz |
业务含义 |
info / status / index |
| type |
数据类型 |
string / hash / list / set / zset |
| id |
唯一标识 |
userId / orderId |
示例
wimp:user:info:hash:1001
mall:order:status:string:90001
iot:device:alarm:zset:device123
说明:
- 统一小写,用冒号分隔
- 从左到右语义逐渐具体
- 便于运维、监控、批量删除与数据隔离
二、通用 Key 命令
| 命令 |
说明 |
返回值 |
keys pattern |
模糊查询 key(⚠ 生产慎用,O(N)) |
匹配的 key 列表 |
del key [key ...] |
删除一个或多个 key |
成功删除的 key 数量 |
exists key [key ...] |
判断 key 是否存在 |
存在的 key 数量 |
expire key seconds |
设置 key 的过期时间(秒) |
1=成功,0=失败 |
ttl key |
查看剩余过期时间 |
剩余秒数 / -1 永久 / -2 不存在 |
三、String(字符串)命令
| 命令 |
说明 |
返回值 |
set key value |
新增或覆盖字符串 |
OK |
get key |
获取字符串值 |
value / nil |
mset k1 v1 k2 v2 |
批量设置(原子操作) |
OK |
mget k1 k2 |
批量获取 |
value 列表 |
incr key |
整数自增 1 |
自增后的值 |
incrby key n |
整数自增 n |
自增后的值 |
incrbyfloat key n |
浮点数自增 n |
自增后的值 |
setnx key value |
key 不存在才设置 |
1=成功,0=失败 |
setex key seconds value |
设置值并指定过期时间 |
OK |
四、Hash(哈希)命令
| 命令 |
说明 |
返回值 |
hset key field value |
新增/修改字段 |
1=新增,0=覆盖 |
hget key field |
获取字段值 |
value / nil |
hmset key f1 v1 f2 v2 |
批量设置字段 |
OK |
hmget key f1 f2 |
批量获取字段 |
value 列表 |
hgetall key |
获取所有 field 和 value |
Map 结构 |
hkeys key |
获取所有 field |
field 列表 |
hvals key |
获取所有 value |
value 列表 |
hincrby key field n |
字段自增 |
自增后的值 |
hsetnx key field value |
field 不存在才设置 |
1=成功,0=失败 |
典型场景:对象属性、用户信息、设备元数据
五、List(列表)命令
| 命令 |
说明 |
返回值 |
lpush key e1 e2 |
左侧插入元素 |
列表长度 |
rpush key e1 e2 |
右侧插入元素 |
列表长度 |
lpop key [count] |
左侧弹出元素 |
元素 / 列表 |
rpop key [count] |
右侧弹出元素 |
元素 / 列表 |
lrange key start end |
获取区间元素 |
元素列表 |
blpop key timeout |
阻塞(阻塞客户端线程)左弹 |
key + value |
brpop key timeout |
阻塞(阻塞客户端线程)右弹 |
key + value |
典型场景:消息队列、任务队列
六、Set(无序集合)命令
| 命令 |
说明 |
返回值 |
sadd key member |
添加元素 |
新增数量 |
srem key member |
删除元素 |
删除数量 |
scard key |
元素个数 |
数量 |
sismember key member |
判断是否存在 |
1=存在,0=不存在 |
smembers key |
获取所有元素 |
元素列表 |
sinter k1 k2 |
交集 |
集合 |
sdiff k1 k2 |
差集 |
集合 |
sunion k1 k2 |
并集 |
集合 |
典型场景:标签、去重、关系集合
七、Sorted Set(有序集合)命令
| 命令 |
说明 |
返回值 |
zadd key score member |
添加/更新元素 |
新增数量 |
zrem key member |
删除元素 |
删除数量 |
zscore key member |
获取 score |
score / nil |
zrank key member |
升序排名(0 开始) |
排名 |
zcard key |
元素数量 |
数量 |
zcount key min max |
score 区间统计 |
数量 |
zincrby key n member |
score 自增 |
新 score |
zrange key start end |
按排名升序 |
member 列表 |
zrangebyscore key min max |
按 score 范围 |
member 列表 |
zinter / zunion / zdiff |
交/并/差集 |
新集合 |
zrevxxx |
所有命令的降序版本 |
— |
典型场景:排行榜、延迟队列、权重排序
八、最佳实践总结
- ❌ 禁止生产使用
keys *
- ✅ 使用 明确前缀 + 语义化命名
- ✅ 对象用 Hash,计数用 String,排序用 ZSet
- ✅ 设置合理过期时间,避免内存泄漏
- ✅ 业务 key 与缓存 key 分前缀区分