上一篇
场景还原:
凌晨2点接到报警,线上订单缓存异常💥,你盯着keys *
命令返回的10万条key两眼发黑,这时候需要的不是咖啡☕,而是精准揪出问题key的杀手锏!
# 千万别在生产环境用!会阻塞整个Redis服务! keys *
这个命令会暴力扫描所有key,数据量大的时候直接让Redis卡成PPT❌。
# 分批次扫描,不阻塞服务 SCAN 0 MATCH "user:cart:*" COUNT 100
order:2025*
) SCAN 17
继续扫描) # 明确知道完整key名时最快 EXISTS "user:profile:9527"
# 导出内存报告(需配置rdb-tools) redis-memory-for-key "cache:hot:items"
Key: "cache:hot:items"
Type: hash
Size: 8.7MB
TTL: 3600s
# 用特殊符号划分业务域 set "shop::{北京}::user_vip_level" 3
这样可以通过SCAN 0 MATCH "shop::{北京}*"
快速定位区域数据📍
# Python示例:用set维护用户订单索引 redis.sadd("user:orders:9527", "order:6688") redis.sadd("user:orders:9527", "order:7789")
需要查某用户所有订单时,直接SMEMBERS user:orders:9527
搞定✅
# 实时观察被频繁访问的key redis-cli --hotkeys
输出结果会标记hot
的key,快速发现异常访问🔥
rename-command KEYS ""
redis-cli --scan --pattern "*" | while read key; do echo "$key: $(redis-cli ttl $key)"; done
业务:子模块:ID # 如 im:msg:session:2025
方法 | 10万key耗时 | 是否阻塞服务 |
---|---|---|
keys * |
8s | ❌ 完全阻塞 |
SCAN + MATCH |
3s/次 | ✅ 非阻塞 |
EXISTS 精确查询 |
01ms | ✅ 非阻塞 |
最后忠告:
下次再遇到"找key恐慌症",记得先深呼吸😮💨,然后优雅地甩出SCAN命令,深藏功与名~
本文由 铎玑 于2025-07-30发表在【云服务器提供商】,文中图片由(铎玑)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/483837.html
发表评论