跳到主要内容

缓存雪崩

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);

这样可以有效防止缓存雪崩现象。