布隆过滤器是什么?老男孩Python
老男孩IT教育
常见问题
2021年6月10日 15:36
众所周知,Python语言在近几年十分火热,并且它的适用范围很广泛,除了岗位规定使用外,还可以用于日常生活,可以自己获取一些榜单、搞一些小游戏等等,对于redis缓存穿透的问题,如何解决呢?办法之一就是使用布隆过滤器。请看下文
众所周知,Python语言在近几年十分火热,并且它的适用范围很广泛,除了岗位规定使用外,还可以用于日常生活,可以自己获取一些榜单、搞一些小游戏等等,对于redis缓存穿透的问题,如何解决呢?办法之一就是使用布隆过滤器。请看下文:
什么是布隆过滤器?
布隆过滤器是一种数据结构,特点是高效地插入和查询,使用它可以判断某样东西一定不存在或可能存在,相比于传统的数据结构,它更高效、占用空间更少,但是唯一缺点就是它的结果带有一定的可能性,并不是百分百确定的。
原理:
如果我们需要插入一个值,会经过hash函数的计算,计算后假设值为2,4,8,那就需要放入所对应的bit位置,接下来再添加一个值,计算后假设值为1,4,6,继续放入所对应的位置,但是这里注意了,两次放入都有数字4,所以可以看出布隆过滤器并不能确认某个数据一定存在,但是与此同时,如果布隆过滤器没有找到我们想要的数值,那么证明是百分百不存在的。
准确性:
如何提升准确性呢?目前有两点:
1:多个hash,增加随机性,减少数据重复的几率
2:扩大范围,使数值均匀分布,进一步减少数据重复的几率
话虽如此,也还是不能彻底保证数值是百分百正确的,但是可以确定一个数值是百分百不存在的
那么python中的布隆过滤器有哪些应用场景呢?
1.爬虫对url去重,避免爬取相同网址。
2.缓存穿透,将所有可能存在的数据缓存放入其中,当黑客访问不存在的缓存时迅速返回避免缓存及DB挂掉。
3.黑名单过滤。
4.反垃圾邮件,从无数个垃圾邮件列表中判断哪些为垃圾邮件
如果你对Python感兴趣,想要学到更多知识,就来老男孩教育吧!老男孩教育分为线上、线下班,小伙伴可以根据自身情况选择哦
推荐阅读:
