码迷,mamicode.com
首页 > 其他好文 > 详细

布隆过滤器(Bloom Filter)

时间:2020-01-11 13:06:02      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:ima   垃圾邮件   原理   自己实现   alt   邮件   数据   idt   概念   

一、概念

1. 布隆过滤器是一个数据结构:bit数组+随机映射函数

技术图片

2. 作用:高效判断某个元素是否在给定的集合中

3. 缺点:有一定的错误识别率,随着数据量越大,错误识别率越大;并且不容易删除

 

二、原理

1. 加入元素:

a. 使用布隆过滤器中的哈希函数,计算元素的哈希值,可能有多个哈希函数,对应多个哈希值

b. 根据所有哈希值,把bit数组中对应下标的值设置为1;如果设置时发现已经全部为1,表示元素重复

2. 判断元素:

a. 计算哈希值

b. 判断是否所有对应的下标都为1,都为1存在布隆过滤器;有一个不为1表示不存在布隆过滤器中

3. 错误率:不同的元素,通过哈希函数计算出来的位置相同

4. 判断元素存在,小概率会误判;判断元素不存在,一定不会误判

 

三、使用场景

1. 判断给定的数据是否存在大数据中

2. 防止缓存穿透,判断请求的数据是否有效,避免绕过缓存直接访问数据库

3. 垃圾邮件过滤

4. 黑名单功能

5. 爬虫去重url

 

四、Redis中的布隆过滤器

1. 可以根据原理自己实现布隆过滤器

2. 单机使用Guava的布隆过滤器

3. 分布式使用Redis中的布隆过滤器

 

 

 

参考:

https://mp.weixin.qq.com/s/_qsHjDemXUNObB0h0XHCkQ

 

布隆过滤器(Bloom Filter)

标签:ima   垃圾邮件   原理   自己实现   alt   邮件   数据   idt   概念   

原文地址:https://www.cnblogs.com/june0816/p/12153002.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!