Redis布隆过滤器原理

其实布隆过滤器本质上要解决的问题,就是防止很多没有意义的、恶意的请求穿透Redis(因为Redis中没有数据)直接打入到DB。它是Redis中的一个modules,其实可以理解为一个插件,用来拓展实现额外的功能。

可以简单理解布隆过滤器的功能:它就是记录了一份DB数据,然后请求过来,会优先通过布隆过滤器进行判断,当前请求的数据是否存在:
如果存在数据:则意味着数据库确实存在这个数据,则放行到DB中。
如果不存在数据:则意味着这个请求的数据,在数据库也是没有的,则不放行到数据库

布隆过滤器原理

布隆过滤器本身是一个算法,用来判断一个元素是否在一个集合。(因为不可能蠢到真的记录一份完整的DB数据的)
这种算法由一个二进制数组和一个Hash算法组成

误判问题:

  • 因为通过Hash算法进行计算,可能存在不同的元素计算后得到hash值相同,所以hash冲突是误判问题的本质
  • hash计算后的数据在数据组上,但不一定在数据库
  • hash计算后的数据不在数组上,就一定不在数据库

所以说布隆过滤器,是一个概率型的算法,有一定的误差,但是它可以过滤大部分数据请求,少部分的与因为误差,进入数据库。

解决方式:

  • 增大数组容量,让Hash冲突的概率降低。
  • 增加Hash函数,多个hash函数来计算hash值,降低冲突概率
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Survivor001

你可以相信我,如果你愿意的话

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值