栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

redis缓存穿透

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

redis缓存穿透

概念:

查的数据是缓存和数据库中都不存在的数据。比如通过id查询商品信息,id一般大于0,攻击者会故意传id为-1去查询,由于缓存不命中则从DB中获取数据,这将会导致每次缓存都不命中数据导致每个请求都访问DB,造成缓存穿透。

解决方案:

1.利用互斥锁,缓存失效的时候,先去获得锁,得到了锁,再去请求数据库。没得到锁,则休眠一段时间重试。

2.采用异步更新策略,无论key是否取到值,都直接返回。value值中维护一个缓存失效时间,如果缓存过期,异步起一个线程去读数据库,更新缓存。需要做缓存预热(项目启动前,先加载缓存)操作。

3.提供一个能迅速判断请求是否有效的机制,比如,利用布隆过滤器内部维护一系列合法有效的key。迅速判断出,请求所带的key是否合法有效,如果不合法,则直接返回。

4.如果从数据库查询的对象为空,也放入缓存,只是设定的缓存过期时间较短,比如设置为60秒。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/323216.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号