架构金句: 缓存一致性不是“写几行代码”的问题,而是“系统如何感知数据变化”的问题。 当你把缓存删除从业务代码中剥离出来,交给数据变更链路本身去驱动,缓存才真正成为“数据库的加速层”,而不是“风险源”。
一、问题本质:为什么缓存一致性永远是“坑王”?
缓存的核心价值是:
以空间换时间,用不完全实时换高性能。
但一旦涉及写操作,就必然产生“双写问题”:
数据库 ←→ 缓存
任何顺序只要处理不好,就会产生:
- 脏数据
- 回写污染
- 长时间不一致
- 并发放大问题
二、伪解法拆解:先更库 & 先删存,为什么都不行?
❌ 方案1:先更新数据库,再删除缓存
A:update DB (new)
B:read cache (old)
B:回写 cache(old)
A:delete cache (已经被旧数据覆盖)
结果:
缓存里是旧数据,数据库是新数据,且缓存被“稳定污染”。
❌ 方案2:先删除缓存,再更新数据库
A:delete cache
B:read cache miss
B:read DB (old)
B:write cache(old)
A:update DB(new)
结果:
缓存旧,数据库新,产生不一致窗口。

331

被折叠的 条评论
为什么被折叠?



