分布式是大型架构核心,下面我详解分布式缓存雪崩@mikechen
什么是缓存雪崩
缓存雪崩,指在分布式系统中,大量缓存数据在同一时间集中失效或缓存服务宕机。

导致瞬时所有请求直接打到数据库或下游服务,从而引发系统整体性能急剧下降甚至“雪崩式”崩溃。
简单来说:“原本该被缓存挡住的海量请求,在缓存同时失效时一股脑涌向数据库,压垮后端系统。”
为什么会发生缓存雪崩
缓存雪崩的根本原因是 缓存层的“集中失效”或“整体不可用”。

1. 大量缓存同时过期
系统为数据设置了相同的缓存过期时间(如1小时),结果在同一时间点(例如整点)同时失效。
大量请求并发访问这些刚过期的Key,全部穿透到数据库,引起数据库压力暴涨。
2. 缓存服务宕机或不可用
Redis 集群节点宕机、网络分区或机房异常,导致整个缓存层暂时不可用。
所有读请求直接打到数据库,瞬间引发雪崩。
3. 热点数据过期或未预热
热点Key(例如首页、爆款商品)在失效后未能及时重新加载。
大量用户并发访问这个Key时,由于缓存未命中,导致短时间内上游数据库被打穿。
缓存雪崩解决方案

1.缓存过期分散(随机过期)
为缓存项在原始过期时间基础上加入随机偏移,避免大量键同时失效。
适用于大规模普通数据,代价小、实现简单。
2.提前刷新(主动刷新/后台预热)
在缓存过期前的一段时间由后台线程或定时任务主动刷新热点数据,保证缓存持续可用。
对于关键或热点数据,采用预热策略能显著降低回源风险。
3.负载保护与降级策略
在后端压力高时启用降级策略(返回默认值、缓存的弱一致数据或错误提示),保证核心服务可用。
结合熔断器、限流器(令牌桶、漏桶等)对突发流量进行保护。
4.多级缓存与本地缓存
引入本地缓存(应用内)作为一级,分布式缓存为二级,减轻分布式缓存读压力并提高可用性。
采用一致性哈希或读写分区设计,增强缓存层的弹性与扩展性。
关于mikechen
mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。