使用布隆过滤器解决问题

在海量数据场景中,如何快速判断特定数据是否存在是挑战。布隆过滤器提供了一种空间效率高的解决方案,利用多个哈希函数将数据映射到二进制向量,用于可能存在或一定不存在的判断。在解决数据库查询、垃圾邮件过滤、错误单词检测、URL重复检测及Hbase过滤等问题中发挥作用。面对缓存穿透问题,布隆过滤器能预先过滤无效请求,减轻数据库压力。
摘要由CSDN通过智能技术生成

引言
 在海量数据面前如何去过滤,及查找数据。下面有几个问题:

  1. 总共有50亿个电话号码,现在已经知道10万个号码,如何在这100亿个电话号码中去快速判断这些10万个号码是否存在?

  2. 垃圾邮件过滤。

3.wps文字处理软件错误单词的检测。

  1. 网络爬虫重复URL检测。

  2. Hbase行过滤器。
       上面的问题都有一些特点,数据量很大,并且要在海量数据中查找其中几条或者部分数据。看看常规的解决方法及问题:

  3. 所有数据放在数据库,通过数据库查询,但是实现快速查询有点困难。

  4. 数据全部放在集合里,数据所占空间:50亿 * 8字节 = 大约40G,内存浪费而且数据量更大内存空间不一定够。

  5. Redis的hyperloglog,查询不够准确。

当数据量较小,内存又足够大时,使用hashMap或者hashSet等结构就好了。但是如果当这些数据量很大,数十亿甚至更多,内存装不下且数据库检索又极慢的情况,在1970年伯顿.布隆就提出了可以用很小的空间来解决上面那些类似问题。

布隆过滤器基本原理

用一个很长的二进制向量( 也可以理解成bit数组)和若干个哈希函数,这些哈希函数通过计算你要找到的值是否映射在这个二进制向量中。

布隆过滤器初始化的时候bit数组里的值都是0.

当我们将一个元素加入布隆过滤器中的时候,会进行如下操作:

  1. 使用布隆过滤器中的哈希函数对元素值进行计算,得到哈希值(

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值