redis数据结构-布隆过滤器

一、原理

 

 布隆过滤器就是一个初始为0的数组+n个hash函数

上图三个hash函数h1,h2,h3,分别算出x1的三个位置,h1(x1),h2(x1),h3(x1),然后把对应位置(数组的1,4,8)置1,同理算出x2的三个位置(数组的4,6,10)置1

判断是否存在则根据三个hash函数算出3个位置,如果都是1则有可能存在,若任意1个位置为0则肯定不存在

判断出不存在一定不存在,判断出存在则有一定几率误判(只是判断3个位置为1,有可能不是同一个值算出来的),因此hash函数个数和数组的长度决定了误判几率

 

二、特点

  1. 布隆过滤器有一定误判
  2. 用空间换时间,使用前可以根据误差率和数据量计算占用大小(有很多网站支持计算)
  3. 无法清除已有的数据,适合只增不减的数据
posted @ 2021-06-27 23:44  扶不起的刘阿斗  阅读(171)  评论(0编辑  收藏  举报