简单聊聊布隆过滤器

这两天面试别人的时候问到了一些关于Redis的问题,不可避免的提到了缓存穿透等问题。说到缓存穿透,很多人肯定就想到了过滤器,那么有一款已经诞生了很多年的布隆过滤器就可以拿出来说一说了。
(以下内容仅表示个人理解)
布隆过滤器的本质是一个二进制向量,通过计算hash来确定下标。把数组对应的下标位置改成1。当一个数据过来的时候,经过同样的hash算法计算出下标,若下标对应是1则表示存在。
借用知乎大佬的图从这里应该可以看出来了,由于Hash冲突的存在,并不能保证查询到了对应的下标是1的数据一定存在,它只能够证明某个数据一定不存在或可能存在。会有一定的误判率。这个误判率可以通过调整数据进行几次hash运算来调整。hash计算的次数越多。向量长度越大,误判率也就越低。可以根据实际的情况和允许的误判率来设置。这边也可以看出一个时间复杂度了,需要进行hash运算越多,时间复杂度就越大。O(1)~O(N) N为Hash算法的个数。所以如果误判率设置的越低,效率也就越差。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值