后台改完配置,本机立刻生效,其他七台过了五分钟才变,查代码发现删除只调了本地 map 的 invalidate,Redis 里的旧值还在。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,删除逻辑封装了两个方法,调用方只用了本地那一个,Redis 层没有动。其他实例本地未命中时回源 Redis,又把旧值拿回来了。

「多级缓存删除遗漏」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。别只看报错的最后一行,往上看几行,真正的起因通常在上面。

redis.del(key);
local.invalidate(key);
broadcast(key);

同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。

具体做法是,删除统一走一个入口 按 Redis 再本地再广播的顺序执行;封装成注解或拦截器 禁止业务代码直接操作单层;改完在另一台实例上读同一个 key 验证。

最后用这个标准收尾,在 A 机改配置,B 机一秒内读到新值,八台实例抽查结果一致。

作者 9823189