其实布隆过滤器本质上要解决的问题,就是防止很多没有意义的、恶意的请求穿透Redis(因为Redis中没有数据)直接打入到DB。它是Redis中的一个modules,其实可以理解为一个插件,用来拓展实现额外的功能。
可以简单理解布隆过滤器的功能:它就是记录了一份DB数据,然后请求过来,会优先通过布隆过滤器进行判断,当前请求的数据是否存在:
如果存在数据:则意味着数据库确实存在这个数据,则放行到DB中。
如果不存在数据:则意味着这个请求的数据,在数据库也是没有的,则不放行到数据库
布隆过滤器原理
布隆过滤器本身是一个算法,用来判断一个元素是否在一个集合。(因为不可能蠢到真的记录一份完整的DB数据的)
这种算法由一个二进制数组和一个Hash算法组成
误判问题:
- 因为通过Hash算法进行计算,可能存在不同的元素计算后得到hash值相同,所以hash冲突是误判问题的本质。
- hash计算后的数据在数据组上,但不一定在数据库
- hash计算后的数据不在数组上,就一定不在数据库
所以说布隆过滤器,是一个概率型的算法,有一定的误差,但是它可以过滤大部分数据请求,少部分的与因为误差,进入数据库。文章来源:https://www.toymoban.com/news/detail-697069.html
解决方式:文章来源地址https://www.toymoban.com/news/detail-697069.html
- 增大数组容量,让Hash冲突的概率降低。
- 增加Hash函数,多个hash函数来计算hash值,降低冲突概率
到了这里,关于Redis布隆过滤器原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!