redis的缓存穿透原理及其解决方法(布隆过滤器原理)

3 篇文章 0 订阅
1 篇文章 0 订阅

redis的缓存穿透原理及其解决方法(布隆过滤器原理)

1、redis作为缓存的工作原理:客户端请求数据,如果redis中存在相应数据则直接返回,如果redis中不存在该数据,由MySQL查询返回,并将相应的键值存入redis中,便于保持redis中存在的数据为热数据。

2、缓存穿透的原理:当客户端不断请求到redis中不存在的数据,导致每次请求都需要到数据库中查询数据,从而使得redis缓存没有发挥作用。
3、缓存穿透解决方法(布隆过滤器原理):
布隆过滤器原理的结论:使用布隆过滤器的查询的数据如果存在则不一定存在(存在假阳性,即hash冲突不可避免),查询到的数据不存在则一定不存在(由此来过滤掉大部分数据不存在的请求)。

布隆过滤器要解决的问题:如何从海量数据中快速判断大部分数据不存在。
判断的过程:
(1)使用位图来存储数据的:BitSet,该类是直接使用计算机的0、1位来存储的,在mysql中的数据,先通过hash映射到位图中,若存在则把相应bite改为1,由于直接使用bite来存储的,所以映射后的数据占用空间很少,即使mysql中有海量数据。
(2)通过映射判断该数据是否存在。布隆过滤器的原理
使用该原理便可以过滤掉大部分数据在mysql中不存在的请求,从而避免了大部分的缓存穿透请求。但是由于hash冲突无法避免(即假阳性),所以还是会有少部分请求会产生缓存穿透。在这里插入图片描述
可以调节过滤的比例(一般可以稳定在3%),但无法完全过滤掉,只能不断减少比例,但会使得位图空间增大,hash映射计算更多,从而减低效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值