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

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

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

1.1 白名单的流程图

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

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

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
布隆过滤器是一种非常实用的解决缓存穿透缓存击穿和缓存雪崩问题的工具。对于缓存穿透问题,布隆过滤器可以在缓存中存储空值,避免频繁查询数据库。布隆过滤器的原理是通过多次哈希运算将元素映射到一个二进制数组中,如果某个位置的值为1,则表示该元素可能存在;如果为0,则表示该元素一定不存在。通过布隆过滤器,可以快速判断一个请求是否需要查询数据库,从而避免了缓存穿透的问题。\[3\] 对于缓存击穿问题,布隆过滤器可以用于限流和降级策略。通过对热点参数进行限流,可以控制请求的并发量,避免数据库被大量请求压垮。同时,对于无效的请求,可以进行服务降级,直接返回默认值或错误信息,而不是查询数据库。\[2\] 对于缓存雪崩问题,布隆过滤器可以作为一种多级缓存解决方案之一。除了使用Redis作为缓存外,还可以使用Nginx缓存等其他缓存工具,将请求分散到不同的缓存层,从而减轻数据库的访问压力。同时,可以通过设置缓存的过期时间,避免大量缓存同时过期,导致数据库访问压力过大。\[2\] 总之,布隆过滤器是一种非常实用的工具,可以有效解决Redis缓存雪崩、缓存穿透缓存击穿问题。通过合理使用布隆过滤器,可以提高系统的性能和稳定性。 #### 引用[.reference_title] - *1* [redis缓存穿透之终极解决方案——布隆过滤器](https://blog.csdn.net/qq_40606397/article/details/114085367)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [redis缓存雪崩、击穿、穿透](https://blog.csdn.net/weixin_45414913/article/details/124901909)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值