一、功能
判断某项数据是可能在集合中还是肯定不在集合中
二、布隆过滤器的三个重点
1、布隆过滤器比特数组空间大小 m
2、哈希函数个数 k
3、加入的元素 n
三、误判
1、误判率
2、根据所需的精度确定比特数组空间大小
四、具体工作原理
初始时大小为m的比特数组每位均为0,当设置值时分别用k个哈希函数计算哈希值,得到值应该对应的索引,将索引位置置1。当对新值进行判断时,通过k个哈希函数计算哈希值,如果对应的索引位置上均为0,那该值肯定不在集合中,如果不全为0,那么可能在集合中。
五、应用
1、从数十亿垃圾邮件列表中判断某邮箱是否为垃圾邮件
2、Chrome浏览器使用布隆过滤器识别恶意URL
3、Google BigTable、Apache HBase、Apache Cassandra利用布隆过滤器减少对不存在的行和列的查找
等等
Redis 因其支持 setbit 和 getbit 操作,并且性能高,因此很适合做布隆过滤器。使用时注意避免大对象阻塞。