跳到主要内容

缓存雪崩

2025年01月05日
柏拉文
越努力,越幸运

一、认识


缓存雪崩 是指大量缓存同时失效,导致请求直接穿透到数据库,给数据库带来巨大压力,甚至导致服务宕机。

二、原因


  • 大量缓存设置了相同的过期时间。

  • Redis 宕机或不可用。

三、方案


3.1 缓存过期时间分散化

设置随机过期时间,避免大面积缓存同时失效。

示例:EXPIRE key <ttl + random(1,100)>

3.2 多层缓存架构

使用本地缓存(如 GuavaCaffeine)作为第一层,Redis 作为第二层,数据库为最终存储。

3.3 熔断与限流

使用限流机制(如令牌桶)控制数据库访问频率,防止雪崩时数据库被压垮。

3.4 Redis 高可用部署

通过主从复制、哨兵模式或集群模式确保 Redis 的高可用性。