上一篇
场景引入:
凌晨3点,你突然接到报警——Redis内存爆了!😱 登录服务器一看,发现db0
占了80%内存,却不知道哪些Key在"偷偷吃内存",别慌!这篇指南将用最直白的语言,带你玩转Redis的db0
侦查术!
# 连接Redis后执行(慎用!会阻塞服务) 127.0.0.1:6379> SELECT 0 # 切换到db0 OK 127.0.0.1:6379> KEYS * # 显示所有Key 1) "user:1001:profile" 2) "cache:product:list"
⚠️ 警告:生产环境别用KEYS *
!会导致Redis卡顿,改用SCAN
更安全👇
0.0.1:6379> SCAN 0 COUNT 100 # 从游标0开始,每次扫描100个 1) "135" # 下次扫描的游标 2) 1) "session:abc123" # 返回的Key列表 2) "temp:upload:789"
💡 小技巧:反复执行SCAN
直到游标返回0
,表示扫描完成
0.0.1:6379> TYPE "user:1001:profile" hash # 可能是存用户信息的Hash结构
# 需要Redis 4.0+版本 127.0.0.1:6379> MEMORY USAGE "cache:product:list" (integer) 1048576 # 返回字节数(约1MB)
0.0.1:6379> DBSIZE (integer) 3421 # db0当前有3421个Key
# 统计所有以"user:"开头的Key数量 127.0.0.1:6379> EVAL "return #redis.call('KEYS', ARGV[1])" 0 "user:*" (integer) 128
import redis r = redis.StrictRedis() for key in r.scan_iter(count=100): size = r.memory_usage(key) if size > 102400: # 大于100KB算大Key print(f"大Key发现!{key} 占用 {size/1024:.2f}KB")
命令 | 作用 | 示例 |
---|---|---|
DEL |
删除Key | DEL "temp:old:data" |
EXPIRE |
设置过期时间 | EXPIRE "cache:news" 3600 |
TTL |
查看剩余寿命 | TTL "session:xyz" |
RENAME |
重命名Key | RENAME old_key new_key |
FLUSHDB
:这个命令会清空整个db0,操作前先备份 redis-cli --bigkeys
:自动检测大Key redis-rdb-tools
:分析RDB文件 通过SCAN
安全扫描、MEMORY USAGE
分析大小、结合TYPE
判断结构,你已掌握db0的侦查全技能!下次再遇到内存报警,分分钟定位"罪魁祸首"Key~ 🎯
(本文方法基于Redis 7.2版本验证,数据参考2025-08公开文档)
本文由 源娴静 于2025-08-04发表在【云服务器提供商】,文中图片由(源娴静)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://up.7tqx.com/wenda/537506.html
发表评论