大促时某个缓存键的访问量暴涨,单个分片 CPU 打满,接口整体变慢。日志里能对上时间点,这种反而好排。

所有请求集中访问同一个键,落在同一分片同一线程上,无法水平分摊。这一点先确认清楚,后面就不用反复试。

redis-cli --hotkeys
redis-cli object freq user:1001
-- 拆分示例
-- hot:item:1 -> hot:item:1:{0..9}

围绕「Redis 热 key」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

处理上按这个顺序:用监控或采样找出访问量最高的键;本地缓存加短期兜底;把键按维度拆分到多个副本。

结果对不对很好判断,单分片 CPU 回落到正常水位,接口响应时间恢复稳定。

作者 9823189