布隆过滤器

1.布隆过滤器是什么

布隆过滤器(Bloom Filter)是1970年由布隆提出的。是一种空间效率很高的概率数据结构,用于测试一个元素是否在一个集合中。
在这里插入图片描述

2.布隆过滤器的基本思想

位数组:布隆过滤器使用一个位数组,将其所有位初始化为0。
哈希函数:使用多个独立的哈希函数,将要插入的元素通过这些哈希函数得到多个位置,然后将这些位置在位数组中的对应位设置为1。
简单的理解为:布隆过滤器=位数组+一系列的hash函数

3.布隆过滤器的特点

有,是可能有(因为有hash冲突);无,是肯定无

4.布隆过滤器的优缺点

优点:
空间效率高,适合于存储大量数据。
插入和查询操作非常快速。
缺点:
存在误判(因为有hash冲突),即可能会错误地认为某个元素在集合中。
不能删除元素(标准的布隆过滤器),因为删除一个元素可能会影响到其他元素的查找结果。

5.布隆过滤器的使用场景

(1)解决缓存穿透问题
一般情况下,先查询Redis缓存,如果Redis中没有,再查询MySQL。当数据库中也不存在这条数据时,每次查询都要访问数据库,这就是缓存穿透。
在Redis前面添加一层布隆过滤器,请求先在布隆过滤器中判断,如果布隆过滤器不存在时,直接返回,不再反问Redis和MySQL。
如果布隆过滤器中存在时,再访问Redis,再访问数据库。
(2)黑名单验证
用于快速判断某个IP地址是否在黑名单中。
(3)去重
在数据流处理中用于检测是否已经处理过某个元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值