什么是Bloom Filter:
布隆过滤器实际上就是一个bit数组,这个数组中存储的值只有1和0两种。默认数组中的值全部为0。
image.png
当有值过来时,使用多个不同的 Hash 算法计算出多个 Hash 值并将映射到的数组中的位置设置为 1。如下图所示:
image.png
布隆过滤器的优缺点
- 优点
- 占用空间小:数组中只有 1 和 0。
- 查询速度快:基于数组实现,时间复杂度 O(K)
- 保密性好:数组中只存储 0 和 1。不会存储原始数据。
- 缺点
- 会出现误删
- 会出现误判:误判不可避免,但是可以通过增加 Hash 函数的方式提高准确率,降低误判的可能性。
由于是通过增加 hash 函数的方式提高的准确率,所以准确率越高,hash 函数越多,value 插入所用的时间就越长,效率越低。