今天看到缓存穿透的解决方案有一个使用布隆过滤器方式,所以就了解了一下,依然走我们的三连问

1、布隆过滤器是什么

一个很长的二进制的向量和随机函数

 

2、为什么用它

节约性能,我现在有一个很大很大数据,然后判断某个值是否存在。 不考虑内存的情况,可以使用hashMap方式,但是我们现在数据量很大,使用布隆过滤器能节约内存开销。

 

3、原理实现

可以判断一个值肯定不存在,但是无法判断某个值一定存在,只是可能存在,存在一定的误差率

解释:一定不存在:我有一个长度为8的数组且默认值都是0,第一次一个数字1000,通过两次次hash算法得到了第1位和第3位的值修改为1,那么第二次我再来一个数字1000,通过相同的hash算法得到了第一位和第三位还是1,说明1000已经存在了

第三次我写入一个2000的值进来,修改了下标4和7为1,那么第四次我写入3000进来,结果发现下标5为0,说明该3000肯定不存在

可能存在:如果数组长度到了一定的长度,那么有可能存在某些值对应的下标均是1,存在重复,这也是布隆过滤器的缺点。删除也存在缺点,比如我把某个值删除了,那么可能会影响其他的值

 

布隆过滤器个人理解

相关文章:

  • 2021-06-06
  • 2021-12-31
猜你喜欢
  • 2022-12-23
  • 2021-05-28
  • 2021-06-16
  • 2021-07-11
  • 2021-08-02
相关资源
相似解决方案