分布式:缓存与一致性
厘清缓存穿透/击穿/雪崩的区别与应对,以及缓存与数据库一致性的常见方案(延迟双删、binlog 异步)。
本节你将能
区分三类缓存问题并给出解法,说清"先更新数据库再删缓存"的原因与延迟双删的思路。
核心要点
- 穿透:查不存在数据 → 布隆过滤器 / 缓存空值。
- 击穿:热点 key 过期瞬间高并发 → 互斥锁重建 / 逻辑过期。
- 雪崩:大量 key 同时失效 → 过期时间加随机抖动 / 多级缓存 / 高可用。
- 一致性:推荐"先更新库再删缓存";延迟双删降低并发脏数据;更强方案用 binlog(Canal) 异步删缓存。
面试连招
追问:为什么不是"先删缓存再更新库"?如何设计一个高并发秒杀系统?