CONFIG SET maxmemory-policy volatile-lru CONFIG GET maxmemory-policy INFO stats
缓存命中率从 92% 掉到 61%,刚写进去两分钟的数据读出来就是 MISS,evicted_keys 每秒几百个。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:同一个实例里既有随时可重建的缓存,也有不该丢的会话和计数,allkeys-lru 一视同仁,内存一紧就先淘汰最近没被访问的写入。
围绕「Redis 淘汰策略误伤」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。
把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
处理上按这个顺序:把会话和计数拆到独立实例 不要和缓存混跑;纯缓存实例改成 volatile-lru 只淘汰带过期时间的键;核心键单独打前缀 换用 lfu 保住高频访问。
确认没问题再收工,观察一小时,evicted_keys 增长明显放缓,命中率回到 88% 以上。
