缓存雪崩
2025年01月05日
一、认识
缓存雪崩 是大量缓存设置了相同的过期时间后同时失效,导致请求直接穿透到数据库,给数据库带来巨大压力,甚至导致服务宕机。
二、定位
三、方案
3.1 限流与熔断
在应用层对热点接口进行限流,防止瞬间大量请求打垮后端服务。当检测到热点数据异常时,可以快速熔断或降级服务,返回默认值或友好提示,保护后端数据库。
3.1 随机过期时间
在设置缓存过期时间时,加上一个随机值,避免大量 key
同时失效。
// 基础过期时间 60 秒,加上 0~10 秒的随机数
const ttl = 60 + Math.floor(Math.random() * 10);
redis.set('hotKey', value, 'EX', ttl);
这样可以有效防止缓存雪崩现象。