Redis BloomFilter布隆过滤器原理与实现

  发布时间:2025-11-05 08:41:40   作者:玩站小弟   我要评论
Bloom Filter 概念布隆过滤器英语:Bloom Filter)是1970年由一个叫布隆的小伙子提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在 。

Bloom Filter 概念

布隆过滤器(英语:Bloom Filter)是布隆1970年由一个叫布隆的小伙子提出的。它实际上是过滤一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是器原否在一个集合中。它的理实优点是空间效率和查询时间都远远超过一般的算法,缺点是布隆有一定的误识别率和删除困难。

Bloom Filter 原理

布隆过滤器的过滤原理是,当一个元素被加入集合时,器原通过K个散列函数将这个元素映射成一个位数组中的理实K个点,把它们置为1。布隆检索时,过滤我们只要看看这些点是器原不是都是1就(大约)知道集合中有没有它了:如果这些点有任何一个0,则被检元素一定不在;如果都是理实1,则被检元素很可能在。布隆这就是过滤布隆过滤器的基本思想。亿华云计算

Bloom Filter跟单哈希函数Bit-Map不同之处在于:Bloom Filter使用了k个哈希函数,器原每个字符串跟k个bit对应。从而降低了冲突的概率

缓存穿透

每次查询都会直接打到DB

简而言之,言而简之就是我们先把我们数据库的数据都加载到我们的过滤器中,比如数据库的id现在有:1、2、3

那就用id:1 为例子他在上图中经过三次hash之后,把三次原本值0的地方改为1

下次数据进来查询的时候如果id的值是1,那么我就把1拿去三次hash 发现三次hash的值,跟上面的三个位置完全一样,那就能证明过滤器中有1的

反之如果不一样就说明不存在了

那应用的场景在哪里呢?一般我们都会用来防止缓存击穿

简单来说就是你数据库的id都是1开始然后自增的,那我知道你接口是通过id查询的,我就拿负数去查询,这个时候,b2b信息网会发现缓存里面没这个数据,我又去数据库查也没有,一个请求这样,100个,1000个,10000个呢?你的DB基本上就扛不住了,如果在缓存里面加上这个,是不是就不存在了,你判断没这个数据就不去查了,直接return一个数据为空不就好了嘛。

这玩意这么好使那有啥缺点么?有的,我们接着往下看

Bloom Filter的缺点

bloom filter之所以能做到在时间和空间上的效率比较高,是因为牺牲了判断的准确率、删除的便利性

存在误判,可能要查到的元素并没有在容器中,但是hash之后得到的k个位置上值都是1。如果bloom filter中存储的是黑名单,那么可以通过建立一个白名单来存储可能会误判的云南idc服务商元素。

删除困难。一个放入容器的元素映射到bit数组的k个位置上是1,删除的时候不能简单的直接置为0,可能会影响其他元素的判断。可以采用Counting Bloom Filter

常见问题

1、为何要使用多个哈希函数?

Hash本身就会面临冲突,如果只使用一个哈希函数,那么冲突的概率会比较高。例如长度100的数组,如果只使用一个哈希函数,添加一个元素后,添加第二个元素时冲突的概率为1%,添加第三个元素时冲突的概率为2%…但如果使用两个哈希函数,添加一个元素后,添加第二个元素时冲突的概率降为万分之4(四种可能的冲突情况,情况总数100x100)

go语言实现

?
  • Tag:

相关文章

  • 毛桃Pe系统教程(打造专属于你的电脑系统,让操作更高效、更顺心)

    摘要:在日常使用电脑的过程中,我们经常会遇到各种各样的问题,例如系统崩溃、病毒感染等。而且,很多时候我们想要个性化定制自己的电脑系统,以适应个人的需求和爱好。而毛桃Pe系统正是为了解决这...
    2025-11-05
  • 浅析前端数据埋点监控:用户行为与性能分析的桥梁

    在数字化时代,数据是企业决策的重要依据。前端作为用户与产品交互的第一线,其数据埋点监控不仅能够收集用户行为数据,帮助产品团队洞察用户需求,优化用户体验,还能分析性能数据,确保产品运行的流畅性。简单来说
    2025-11-05
  • 探索流式数据库的动态特性

    译者 | 李睿审校 | 重楼本文对流式数据库进行探讨,因为它是数据流处理系统的核心组件。如果需要更多选择,还将提供一些商业上可用的解决方案。流式数据库的基础知识流处理的本质是将数据视为连续不断的流进行
    2025-11-05
  • 分库分表的理解与实践

    在当今大数据时代,随着业务量的不断增长,数据库面临的压力也越来越大。传统的单一数据库架构在面对海量数据存储和高并发访问时,往往显得力不从心。为了解决这些问题,分库分表技术应运而生,成为提升数据库性能和
    2025-11-05
  • Pixelbook教程(探索Pixelbook的功能与技巧,体验极致的电脑操作体验)

    摘要:随着科技的不断发展,电脑已经成为了人们工作和娱乐生活中必不可少的一部分。而谷歌的Pixelbook作为一款强大而多功能的笔记本电脑,以其独特的设计和出色的性能受到了众多用户的喜爱。...
    2025-11-05
  • SQL Server视图中的检查选项、加密选项和模式绑定选项的使用

    在本文中,我们将讨论如何在SQL Server视图中使用检查选项、加密选项和模式绑定选项,并通过示例进行说明。示例数据表的创建和数据填充首先,我们需要创建两个表:Department和Employee
    2025-11-05

最新评论