缓存雪崩与击穿

大量缓存同时失效(雪崩)或热点键失效瞬间(击穿)会把流量直压数据库;对策包括 TTL 抖动、逻辑过期、互斥重建与热点永不过期策略。

雪崩大批键同时失效或缓存层宕机
击穿单热点键失效,瞬时大量回源
对策TTL 加随机抖动;互斥锁单飞重建;逻辑过期后台刷新
  • TTL 抖动:基础过期时间加随机偏移,分散失效时刻
  • 互斥重建:单飞机制确保同一时刻仅一个请求回源
  • 逻辑过期:值内记录过期时间,后台异步刷新,读侧短暂读旧值
  • 热点保护:热点键多副本或本地缓存承接读流量
  • 兜底降级:回源超限时返回旧值或降级数据,保护存储层
与穿透的区别穿透指查询不存在的数据,可用空值缓存或布隆过滤器拦截
组合防线三类问题常在同一故障窗口叠加,方案按层组合而非单选
监测预警命中率骤降与回源量飙升设告警,抢在存储过载前处置
演练验证定期注入批量失效场景,检验单飞重建与降级开关
重建要控并发:无锁并发回源等于把数据库暴露在整个失效窗口上。

易错点

  • TTL 统一设置,整点批量失效压垮数据库
  • 热点键失效后所有请求并发回源重建

数据来源与参考

  • AWS 白皮书:Database Caching Strategies Using Redis
  • Redis 文档:缓存问题与模式
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌