redis缓存穿透
2021/10/12 19:15:54
本文主要是介绍redis缓存穿透,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
概念:
查的数据是缓存和数据库中都不存在的数据。比如通过id查询商品信息,id一般大于0,攻击者会故意传id为-1去查询,由于缓存不命中则从DB中获取数据,这将会导致每次缓存都不命中数据导致每个请求都访问DB,造成缓存穿透。
解决方案:
1.利用互斥锁,缓存失效的时候,先去获得锁,得到了锁,再去请求数据库。没得到锁,则休眠一段时间重试。
2.采用异步更新策略,无论key是否取到值,都直接返回。value值中维护一个缓存失效时间,如果缓存过期,异步起一个线程去读数据库,更新缓存。需要做缓存预热(项目启动前,先加载缓存)操作。
3.提供一个能迅速判断请求是否有效的机制,比如,利用布隆过滤器内部维护一系列合法有效的key。迅速判断出,请求所带的key是否合法有效,如果不合法,则直接返回。
4.如果从数据库查询的对象为空,也放入缓存,只是设定的缓存过期时间较短,比如设置为60秒。
这篇关于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缓存基础知识