避免缓存击穿的利器之BloomFilter.pdf

Bloom Filter 概念 布隆过滤器(英语:Bloom Filter)是1970年由⼀个叫布隆的⼩伙⼦提出的。它实际上是⼀个很⻓的⼆ 进制向量和⼀系列随机映射函数。布隆过滤器可以⽤于检索⼀个元素是否在⼀个集合中。它的优点是空 间效率和查询时间都远远超过⼀般的算法,缺点是有⼀定的误识别率和删除困难。 ⾯试关联:⼀般都会在回答缓存击穿,或者海量数据去重这个时候引出来,加分项哟 Bloom Filter 原理 布隆过滤器的原理是,当⼀个元素被加⼊集合时,通过K个散列函数将这个元素映射成⼀个位数组中的K 个点,把它们置为1。检索时,我们只要看看这些点是不是都是1就(⼤约)知道集合中有没有它了:如 果这些点有任何⼀个0,则被检元素⼀定不在;如果都是1,则被检元素很可能在。这就是布隆过滤器的 基本思想。 Bloom Filter跟单哈希函数Bit-Map不同之处在于:Bloom Filter使⽤了k个哈希函数,每个字符串跟k个 bit对应。从⽽降低了冲突的概率。 简单的说⼀下就是我们先把我们数据库的数据都加载到我们的过滤器中,⽐如数据库的id现在有:1、 2 、3 那就⽤id :1 为例⼦他在上图中经过三次hash之后,把三次原本值0的地⽅改为1 下次我进来查询如果id也是1 那我就把1拿去三次hash 发现跟上⾯的三个位置完全⼀样,那就能证明过 滤器中

文档评论(0)

1亿VIP精品文档

相关文档