首页/数据/数据库速查/缓存雪崩(大面积同时失效/宕机)
Redis 运维与场景124 条

缓存雪崩(大面积同时失效/宕机)

两类雪崩:大批键同一时刻过期、缓存层整体不可用;前者用 TTL 抖动与分批预热,后者靠多级缓存、限流熔断与高可用架构。

数据库速查数据更新于 2026-10-12

TTL 抖动(加随机)

TTL 抖动(加随机)
import random
base = 600
ttl = base + random.randint(-120, 120)   # 600±120 秒
redis.set(key, value, ex=ttl)
# 批量预热时分批:
# for chunk in chunks(keys, 100): warmup(chunk); sleep(0.1)
  • TTL 抖动:同批数据不要同刻过期
  • 多级缓存:本地缓存 + Redis,Redis 挂了本地还能撑一段时间
  • 限流熔断:对回源数据库流量设上限,避免打垮 DB
  • 集群高可用:哨兵/Cluster + 多副本降低单点
雪崩的本质是「同一个瞬间大家都没缓存」:无论是过期还是宕机,都要让「回源流量」可控,这是最后一道闸门。

易错点

  • 批量导入缓存用统一 TTL:下次集体过期就是雪崩时刻
  • 只有缓存层没有回源保护:Redis 一抖数据库直接被打挂

数据来源与参考

  • Redis 官方文档: 使用模式
  • 缓存雪崩治理实践

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌