击穿:key刚好过期,被清理,大量并发去请求数据库 解决方案:
- 第一步请求redis出现null
2.给一个进程设置一个锁,只有获得锁的进程才能去访问数据库
如果第一个线程挂了-》可以设置过期时间 -》 超过过期时间了-》设置另外一个线程监控是否取回来,更新锁
的时间
3.更新redis中数据
穿透:
1.从业务中接受到的数据是数据库中没有的数据
2.使用布隆过滤器,redis集成布隆过滤器(缺点:布隆过滤器只能增加,不能删除),设置空的key
雪崩:
大量的key失效,间接造成大量的访问到达DB
1.随机设置过期时间
2.时间性无关
解决方法:强依赖击穿方案
业务同时判断零点的时候延迟sleep