SpringBoot + 缓存击穿/惊群效应防护:热点 Key 过期瞬间打垮 DB?逻辑过期+后台刷新!
做缓存系统的同学肯定都遇到过这个问题:某个热点 key 突然过期了,结果瞬间大量请求直接打到数据库上,导致数据库被打爆,服务雪崩。 我之前就遇到过这样一个案例:电商系统的商品详情页,某个人气商品正在秒杀,结果缓存刚好过期了。瞬间几万并发请求全部穿透到数据库,数据库 CPU 直接飙升到 100%,整个系统瘫痪了十几分钟。 这就是经典的"缓存击穿"问题,也叫"惊群效应"。今天我们就来聊聊如何防护这种问题。 缓存击穿的常见场景 1. 热点数据过期 热点数据特点: - 访问频率极高(每秒数万次) - 数据量大(商品信息、用户信息等) - 时效性要求高(需要定期更新) 问题: 当热点数据过期瞬间,所有请求同时发现缓存失效 所有请求同时去查询数据库 数据库无法承受瞬间压力,直接崩溃 2. 缓存击穿 vs 缓存穿透 vs 缓存雪崩 缓存三连击对比: ┌─────────────┬────────────────────────────────┬─────────────────────┐ │ 类型 │ 描述 │ 区别 │ ├─────────────┼───────────────────────....