缓存雪崩,穿透,击穿以及布隆过滤器
2021-04-26 19:44:23 16 举报
缓存雪崩,穿透,击穿以及布隆过滤器
作者其他创作
大纲/内容
6
恶意用户
1
缓存击穿
01二进制数组
0
Hello
缓存穿透不存在的key
淘宝
redis
缓存查不到数据去数据库查
可以加个分布式锁
缓存击穿:击穿是指某一个很热点的key失效。如,一件秒杀商品,放在缓存里,过期时间设置为4小时,结果超时了还没结束,导致一瞬间流量访问大,全打到数据库,数据库挂了。预防方法:1、分布式锁,一个线程去查询数据库,其他线程等一等,查到数据以后,同步到缓存中。
7
4
9
缓存雪崩key失效
请求
缓存穿透:有人恶意攻击,疯狂查询缓存里不存在的数据,导致请求都打在数据库上。比如数据库id都是>0的,然后有人疯狂发送负数来查询,redis当然没有存在的值,就查数据库了。预防方法:1、把数据库查不到的空值也给缓存到缓存里去。2、参数的合法性进行校验。3、拉黑ip4、布隆过滤器。
请求id<0
数据库承受不住挂了
大量请求发送到数据库
计算结果=1
缓存雪崩:当同一时间内大量的key失效,导致所有的请求直接打在DB上,造成数据库宕机。预防方法:1、设置缓存的失效时间不要在同一时间失效。设置缓存的时候随机初始化缓存时间。2、redis集群部署,让热点的key平均分布在不同的节点中。3、不停的跑定时任务,延长失效的时间。
3
数据库也查不到返回null
redis是否有值
数据库
缓存穿透4小时后key过期
N
hash2()
缓存穿透
同步到缓存
计算结果=5
缓存雪崩
标准请求流程
Y
hash1()
请求全部打到数据库
布隆过滤器的原理
请求秒杀1号商品
hash3()
计算结果=3
2
8
5
收藏
0 条评论
下一页