小白日更第八十天->Redis缓存穿透

什么是缓存穿透

缓存穿透其实很好理解.正常来说我们在数据库里存的数据,比如id都是从1开始,然后递增的。那现在如果有一个用户要访问id是-1的这么一条数据,首先去缓存中查看,缓存中发现没有id=-1的数据,然后去数据库中查看,发现数据库中也没有id=-1的数据。如果这样不合理的请求,也就是我们数据库中不存在的数据。有一个两个这样的非法请求,我们数据库抗住还是没问题的,但是如果这样不合理的请求多了,上升到好几千,这里应该就是被**“攻击了”**,那很可能我们的数据库就挂掉了.

那如何防止这种情况的发生呢?

解决方案

1、我们可以在接口层那边对参数做一个校验,如果参数不合法,比如id<0的这种,我们直接就给返回空就可以,不用再去数据库中查找了。也给数据库减小了压力.

2、对查询结果为空的情况也进行缓存,这样,再次访问时,缓存层会直接返回空值。缓存时间设置短一点,或者该key对应的数据insert了之后清理缓存。

3、布隆过滤器。关于布隆过滤器我会在下一篇文章中详细讲解一下,这里大家先知道,布隆过滤器可以解决缓存穿透的问题.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值