布隆过滤器(英语:Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数
2.1 全量存储但是不存储数据本身,适合有保密要求的场景,可以节省空间
2.2 空间复杂度为O(m),不会随着元素增加而增加,占用空间少
2.3 插入和查询时间复杂度都是 O(k), 不会随着元素增加而增加,远超一般算法。
3.1 存在误算率,数据越多,误算率越高
3.2 一般情况下无法从过滤器中删除数据
3.3 二进制数组长度和 hash 函数个数确定过程复杂
空间复杂度为O(m)
插入和查询时间复杂度都是 O(k)
5.1 黑名单校验
5.2 海量数据快速去重
5.3 爬虫URL校验
5.4 leveldb/rocksdb快速判断数据是否已经在block中,避免频繁访问磁盘
5.5 解决海量数据缓存穿透问题
6.1 计数布隆过滤器(增加了计数器以支持删除操作,但是需要更多内存空间)
6.2 布谷鸟过滤器