Redis缓存穿透解决方案-布隆过滤器

我们可以把布隆过滤器理解为一个白名单或者是一个黑名单,因为它的主要作用就是判断一个元素存不存在于这个过滤器里面,就可以变相的理解这个过滤器是一个白名单或者是一个黑名单。我们把数据放到了一个白名单里或者放到一个黑名单里,然后再去判断某个数据是否存在于这个白名单或者黑名单里。

1.布隆过滤器作为白名单

1.1 白名单的流程图

第一步:前端发起了一个查询请求,通过参数key去查询

第二步:参数key会经过一个布隆过滤器,如果这个key不存在于这个过滤器里面,也就是不存在于这个白名单里面,那么就会被过滤器拦截住,然后直接返回这个空数据给前端;如果存在于过滤器里面就会往下执行,会把这个请求发到redis

第三步:如果redis里面存在这个key,就把key对应的数据返回给前端;如果redis里面不存在这个key,就会去数据库里面查询

第四步:如果数据库里面存在这个数据,就会把这个数据更新到redis里面,同时会把这个数据返回给前端;如果数据库里面不存在这个数据,就会直接返回一个空对象给前端

这里还有一条路线,但是这条路线是走不通的,因为如果这个数据库里面不存在这个key,那就说明布隆过滤器过滤器它存在了误判,错误的判断了这个key存在于这个白名单,然后让请求打到了redis,然后再打到了这个数据库,结果查询了一圈发现这个数据根本就没有。 

白名单(布隆过滤器)存在的问题:

布隆过滤器里的数据,存在误判,如果没在白名单里的数据被误判存在于过滤器里的话,会穿透到数据库,不过误判的几率本来就很小,所以穿透问题不大

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值