难缠的布隆过滤器,这次终于通透了

今天来聊一聊面试八股文:布隆过滤器。

说到布隆过滤器,就免不了--->缓存穿透

01

缓存穿透

在高并发下,查询一个并不存在的值时,缓存不会被命中,导致大量请求直接落到数据库。

数据库的响应能力肯定没有缓存强大,出现这样的情况,一般是黑客攻击,拖慢了系统的响应速度。

02

头脑风暴

朴素的分析思路:在缓存前加一道屏障:放置存在(可能存在)的查询键,屏蔽不可能存在的查询键, 业内一般使用布隆过滤器来做这个屏障。

2.1 布隆过滤器的实现过程

布隆过滤器内部维护了一个全为0的bit数组,几个hash函数(f1,f2......)

假设有输入集合{N1,N2},哈希函数f1、f2

1.经过计算 f1(N1)=2, f2(N1)=5, 则将数组下表为2,5的位置标记为1:

2.同理计算f2(N1)=3, f2(N2)=4,则将数组下表为3,4的位置标记为1:

3.有第三个数N3,我们判断N3在不在集合{N1,N2}中, 就进行f1(N3)、f2(N3)的计算

• 如果f1(N3),f2(N3)计算的值均落在上图红色区域, 则说明N3可能属于集合{N1,N2}中的一员• 如果f1(N3),f2(N3)计算的值有一个落在红色区域的外面,则说明N3一定不属于集合{N1,N2}

2.2 布隆过滤器的设计原理

(✍️这里是重点,再看不懂,私聊我)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有态度的马甲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值