redis访问击穿/穿透/雪崩
2021/11/2 19:11:31
本文主要是介绍redis访问击穿/穿透/雪崩,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
redis访问击穿
在某个时刻,redis中的一个key被淘汰了,但是瞬间有大量的请求找这个key,找不到,导致请求被压到db端。
解决方案
- 所有client都访问key
- 失败以后调用setnx()
3-1. 上面成功的client去访问db,并更新redis。
3-2. 上面setnx失败的client,随机sleep几百毫秒,然后重复步骤1。
问题
- 这个setnx成功的client挂了
-> 设置setnx的过期时间。 - setnx的过期时间太短,或者db访问有堵塞,导致在更新redis之前,设置setnx的锁过期了,这样就会有第二个client再去db取值,造成循环。
-> 多线程,一个线程取db,另一个线程监控是否db操作完成,如果没有那就再更新setnx的timeout值。
redis访问穿透
业务要查询的数据是这个系统不存在的数据,造成redis失效,db空转。
解决方案
使用布隆过滤器
- client包含所有
- client包含算法,bitmap放入redis
- redis中加入bloom filter pattern
问题
布隆过滤器只能增加,不能删除。
-> 布谷鸟过滤器/空key
redis访问雪崩
大量key同时失效,造成大量访问到达db
解决方案
redis的key使用随机过期时间
- 零点所有key必须过期(类似金融系统,某个时间点开始使用新的参数)
-> 还是不可以用,这时就要依赖击穿方案。
-> 在前端业务层加判断零点延时,避免同时产生大量请求的情况。 - 时点性无关 -> 可以用
这篇关于redis访问击穿/穿透/雪崩的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-08阿里云Redis项目实战入门教程
- 2024-11-08阿里云Redis资料:新手入门与初级使用指南
- 2024-11-08阿里云Redis教程:新手入门及实用指南
- 2024-11-07阿里云Redis学习入门:新手必读指南
- 2024-11-07阿里云Redis学习入门:从零开始的操作指南
- 2024-11-07阿里云Redis学习:初学者指南
- 2024-11-06阿里云Redis入门教程:轻松搭建与使用指南
- 2024-11-02Redis项目实战:新手入门教程
- 2024-10-22Redis入门教程:轻松掌握数据存储与操作
- 2024-10-22Redis缓存入门教程:快速掌握Redis缓存基础知识