Reference · 004 · 打印友好 · 配套 Lesson 0005

缓存模式速查表

来源:Microsoft Azure Cache-Aside Pattern + 小林 coding Redis 篇

四种读写模式

模式机制适用/代价
Cache-Aside
旁路缓存 ✅
应用自己管:读 miss 回源并回填;写 = 更新 DB + 删除缓存 默认首选;应用层代码维护,有短暂不一致窗口
Read-Through 缓存层代理回源:应用只访问缓存,miss 由缓存组件自己读 DB 回填 应用代码更薄;需要支持该模式的组件
Write-Through 写先到缓存层,由它同步写 DB 一致性好;写延迟高,冷数据白写
Write-Behind 写只进缓存,异步批量刷 DB 写性能最好;缓存挂了丢数据——只用于可丢数据

为什么写路径是「删」不是「更新」

三大问题对照

为什么没挡住解法(预防 → 兜底)
穿透
数据不存在
恶意/无效 key 永不命中,每次打 DB 空值短 TTL 缓存;布隆过滤器前置(说「无」必无,说「有」可能误报)→ 接口层参数校验
击穿
单热 key 过期
热 key 失效瞬间,并发全部回源重建 互斥锁/single-flight 只放一人重建;逻辑过期(不真删,异步刷新);热 key 永不过期
雪崩
大面积失效
大量 key 同时过期 / 缓存集群宕机 TTL 加随机抖动错峰;集群高可用(主从+哨兵/集群);熔断降级 + 本地缓存二级兜底

热 key 与 sizing