适用于:
- Linux 服务器排查 Redis
- Java 后端开发调试缓存
- 快速定位缓存是否命中
一、进入 Redis
1. 默认连接
redis-cli
2. 指定端口
redis-cli -p 6379
3. 带密码连接
redis-cli -a 密码
连接成功后会看到:
127.0.0.1:6379>
二、查看 Key
1 查询所有 Key(开发环境)
KEYS *
⚠ 注意
生产环境 不推荐使用 KEYS*,因为会阻塞 Redis。
2 按前缀查询 Key(最常用)
KEYS home:Key:data*
返回示例:
1) "home:Key:data:ALL:today"
2) "home:Key:data:ALL:month"
3) "home:Key:data:210100:today"
3 生产环境推荐方式(SCAN)
SCAN 0 MATCH home:Key:data*
特点:
- 不阻塞 Redis
- 渐进式扫描
- 适合线上环境
三、查看 Key 类型
TYPE key
例如:
TYPE home:Key:data:ALL:today
返回类型:
string
hash
list
set
zset
四、查看 Key 的 Value
不同类型查询方式不同。
1 String 类型(最常见)
GET key
示例:
GET home:Key:data:ALL:today
2 Hash 类型
HGETALL key
示例:
HGETALL user:1001
3 List 类型
LRANGE key 0 -1
4 Set 类型
SMEMBERS key
5 ZSet 类型
ZRANGE key 0 -1 WITHSCORES
五、查看 Key 是否存在
EXISTS key
返回值:
1 key存在
0 key不存在
示例:
EXISTS home:Key:data:ALL:today
六、查看 Key 过期时间(非常常用)
TTL key
示例:
TTL home:Key:data:ALL:today
返回值含义:
| 返回值 | 含义 |
|---|---|
| >0 | 剩余过期时间(秒) |
| -1 | 没有设置过期时间 |
| -2 | key 不存在 |
示例:
3600
表示:1小时后过期
七、查看毫秒级过期时间
PTTL key
示例:
PTTL home:Key:data:ALL:today
返回值为 毫秒。
八、设置 Key 过期时间
EXPIRE key 秒
示例:
EXPIRE home:Key:data:ALL:today 3600
表示:1小时过期
九、删除 Key
删除单个
DEL key
示例:
DEL home:Key:data:ALL:today
删除多个
DEL key1 key2 key3
十、查看 Redis 当前 Key 数量
DBSIZE
返回示例:
(integer) 152
表示当前数据库有 152个 key。
十一、查看 Redis 运行信息
INFO
查看内存信息:
INFO memory
十二、清空 Redis(慎用)
清空当前数据库
FLUSHDB
清空所有数据库
FLUSHALL
⚠ 注意:
生产环境 不要随便执行
十三、批量查看 Key 过期时间(Linux 常用)
redis-cli KEYS "home:Key:data*" | xargs -I {} redis-cli TTL {}
输出示例:
home:Key:data:ALL:today -> 3600
home:Key:data:ALL:month -> -1
home:Key:data:210100:today -> 1800
说明:
- 3600 → 1小时过期
- -1 → 永不过期
十四、Java 开发排查 Redis 缓存推荐步骤
排查缓存问题通常只需要四步:
1 查询 key
KEYS home:Key:data*
2 查看 key 类型
TYPE key
3 查看 value
GET key
4 查看过期时间
TTL key
通过这四步可以快速判断:
- 是否存在缓存
- 数据是否正确
- 是否设置过期时间
- Redis 类型是否正确
十五、推荐 Redis Key 命名规范
建议统一格式:
业务:模块:数据:条件
示例:
home:key:data:210100:today
home:key:data:210100:month
home:key:data:210100:year
结构说明:
| 部分 | 含义 |
|---|---|
| home | 业务模块 |
| key | 功能模块 |
| data | 数据类型 |
| 210100 | 区域 |
| today | 时间维度 |
优点:
- 结构清晰
- 方便查询
- 避免 key 混乱
十六、Redis 排查缓存问题常用命令总结
开发最常用命令:
KEYS home:Key:data*
TYPE key
GET key
TTL key
EXISTS key
DEL key
基本可以解决 90% Redis 缓存问题排查