redis雪崩、穿透、击穿和解决方案
1. redis雪崩
大量的缓存数据同时时间失效,导致用户直接发起大量请求到数据库
- 生成随机失效的缓存时间数据,使缓存不会在同一时间失效
- 集群部署,热点的key分别在不同的节点上
- 不设置缓存失效的时间
- 定时任务更新缓存的数据
2. redis穿透
用户请求数据,例如ID为负数,不存在缓存里,也不存在数据库里,就会造成缓存击穿
- 无意义的数据放入缓存,下一次相同的请求就会命中缓存
- IP过滤
- 参数校验
- 布隆过滤器
3. 击穿
由于缓存的热点键到时失效导致用户的请求直接访问数据库
- 使用永久缓存
- 用分布式锁
解决方案:布隆过滤器,分布式锁
4. 项目上线准备和措施
-
上线前准备
redis集群、Mysql集群、 项目本身的分布式集群
-
项目运行准备
限流降级,防止大量的数据直接防止数据库
-
项目宕机的措施
集成报警系统 通知开发人员,快速重启项目,利用redis的RDB和aof持久化机制快速恢复缓存数据
https://www.bilibili.com/video/BV1f5411b7ux
https://blog.****.net/kongtiao5/article/details/82771694