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% 以上。

作者 9823189