什么是缓存雪崩?
缓存雪崩是指在同一时间段,大量的缓存键(Key)同时过期,或者缓存服务宕机。
这导致原本应该由缓存处理的请求全部涌向数据库,瞬间造成数据库压力剧增,甚至引发系统连锁反应导致整个服务瘫痪。
核心特征
- 缓存层大量数据同时失效。
- 数据库压力骤增。
常见成因
- 过期时间设置过于集中:大量数据使用了相同的过期时间。
- 缓存服务器故障:Redis 节点挂掉或网络连接中断。
常见解决方案
- 随机过期时间:在设置缓存过期时间时,增加一个随机扰动值(如 1-5 分钟),避免 Key 同时失效。
- 高可用架构:使用 Redis Sentinel 或 Redis Cluster 确保缓存服务的高可用。
- 限流与熔断:在请求压力过大时,通过降级或限流手段保护数据库。具体对比可参考:限流 vs 熔断。
- 多级缓存:增加本地缓存(如 Caffeine)作为二级缓冲。