布隆过滤器
-
作为插件加载到redis服务器里
-
对海量数据去重功能,空间上节省90%以上,但是去重率在99%左右
-
应用场景:1)百度爬虫系统面对海量的已经抓取过的url数据,如何抓取最新的页面,而对没更新过的页面不爬取,使用set集合也可以去重,但是使用的空间资源过大。2)垃圾邮件过滤
-
工作原理
1)添加元素:bf.madd spider:url www.taobao.com www.123qq.com www,maomao.com
spider:url---->key,同时添加多个元素到布隆过滤器
首先,使用不同的hash函数对key存储的元素进行哈希计算,根据计算到的每一个哈希值对其计算出一个整数索引值,用这个索引值和位数组(初始都为0)长度取余,最终得到一个数组位置,并将其置位一,每一个哈希函数会得到一个不同的位置。
注意:有两个元素可能会使同一个位数组置为1
2)判定元素是否存在
bf.mexists spider:url www.maomao.com www.pengyu.com
//同时判断是否有多个元素存在于布隆过滤器,去掉m,即可判断一个元素
流程:首先对元素再执行一次哈希计算,得到与添加元素时相同的数组位置,如果这几个位置全为1,则有可能存在,若有有一个为0,则肯定不存在。 -
布隆过滤器的安装
1)通过docker安装
2)下载布隆过滤器安装包,编译安装;