缓存雪崩(Cache Avalanche)通常是指:大量缓存数据在同一时间集中失效(或缓存服务整体宕机),导致瞬间大量请求直接打到数据库,造成数据库压力激增甚至崩溃。
下面从原因 → 应对方案 → 实践建议三个层面说明如何避免。
避免同时失效:
实际过期时间 = 基础时间 + 随机时间
示例(伪代码):
int expire = 3600 + Random.nextInt(300); // 1小时±5分钟
redis.set(key, value, expire);
✅ 适用:绝大多数业务场景
流程:
✅ 适合:极高并发热点数据(如首页、商品详情)
在:
提前把热点数据写入缓存。
减少单点依赖:
本地缓存(Caffeine/Guava) → Redis → DB
即使 Redis 挂:
防止数据库被冲垮。
当缓存失效时:
示例思路:
if cache missing:
if tryLock(key):
load DB
set cache
else:
sleep & retry
✅ 防止“雪崩前的缓存击穿”
避免 缓存整体不可用。
| 场景 | 推荐方案 |
|---|---|
| 普通业务 | 随机过期 + 限流 |
| 热点数据 | 逻辑过期 + 互斥重建 |
| 大促 | 预热 + 多级缓存 + 降级 |
| 核心系统 | Redis 集群 + 本地缓存 |
避免缓存雪崩 = 不让缓存“集体消失” + 不让数据库“裸奔”
如果你有具体技术栈(如 Redis + Spring Boot / 高并发电商),我可以给你一套可直接用的代码模板。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。