Bloom Filter布隆过滤器
是一种 概率型数据结构 ,特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。
实现原理
创建一个bit数组,若干个hash函数。根据给定的值,使用多个不同的哈希函数生成多个哈希值,并对每个生成的哈希值指向的 bit 位置 置为 1。
bit数组大小,hash函数个数选取 参考 公式
优点
存储及查询速度快,占用空间小。
缺点
不支持删除,有一定概率误判(查询结果不一定准确)。
使用场景
可用于存储数据的全量集合,进行判断指定数据在全量集合中是否不存在或可能存在
Counting Bloom Filter
将标准 Bloom Filter 位数组的每一位扩展为一个小的计数器(Counter),在插入元素时给对应的 k (k 为哈希函数个数)个 Counter 的值分别加 1,删除元素时给对应的 k 个 Counter 的值分别减 1。Counting Bloom Filter 通过多占用几倍的存储空间的代价, 给 Bloom Filter 增加了删除操作。
参考
https://www.jianshu.com/p/2104d11ee0a2
https://cloud.tencent.com/developer/article/1136056