缓存与 KV 存储Cache Avalanche
缓存雪崩 是什么?
大批 key 同时失效或缓存集群挂掉,流量全压到数据库
类比:整栋楼同时停电,所有人一起走楼梯
两种成因
一是大批 key 设了相同的过期时间(比如凌晨统一预热、统一 24 小时过期),到点集体失效;二是 Redis 集群宕机,所有缓存同时不可用。
怎么防
核心思路:不要让失效同时发生,也不要让数据库独自承受全部流量。
- 过期时间加随机抖动:30 分钟 ± 5 分钟
- 多级缓存:本地 Caffeine + Redis,Redis 挂了本地还能顶一阵
- 限流降级:数据库前加熔断,宁可拒绝部分请求也不让库崩
- Redis 高可用:哨兵或 Cluster,主从自动切换
- 缓存预热:启动或低峰期主动加载热点数据
别忘了演练
很多团队配了高可用但从没验证过。定期做一次「手动 kill 主节点」的演练,比配置写得多漂亮都有用。