缓存穿透击穿雪崩怎么处理
缓存穿透、击穿、雪崩是三个经典问题。本文从现象到解决方案,把这三个概念讲清楚。
先明确 Redis 在系统里的角色
Redis 常见用途不是“替代数据库”,而是缓存热点数据、保存会话、做简单计数、排行榜、分布式锁等。设计时要先问:这份数据丢了能不能恢复?是否允许短暂不一致?
一个缓存查询的基本写法
String key = "user:" + userId; |
这个流程看起来简单,但要注意缓存穿透、缓存击穿和缓存雪崩。
三个常见问题
- 穿透:查询不存在的数据,可以缓存空值或用布隆过滤器。
- 击穿:热点 key 过期瞬间大量请求打到数据库,可以用互斥锁或逻辑过期。
- 雪崩:大量 key 同时过期,可以给过期时间增加随机值。
验证方式
本地可以先用 redis-cli 查看 key:
redis-cli |
确认缓存写入、过期时间和删除策略都符合预期。