原理
布隆过滤器主要由一个很长的二进制向量(即位数组)和一系列随机映射函数(即哈希函数)组成。当一个元素被加入布隆过滤器时,它会通过多个哈希函数生成多个哈希值,并将这些哈希值对应的位数组中的位置设置为1。当需要检查一个元素是否存在于布隆过滤器中时,同样通过多个哈希函数生成哈希值,并检查这些位置是否全部为1。如果全部为1,则元素可能存在;如果有任何一个位置不为1,则元素一定不存在。
优缺点
优点:
- 空间效率高:布隆过滤器通过哈希函数将元素映射到位数组中,不存储元素本身,只存储哈希结果的位标记,因此节省了大量空间。
- 查询速度快:由于只需要对位数组进行简单的位运算,因此查询效率非常高。
- 适合大数据集:布隆过滤器特别适合于在大数据集中进行快速查找。
缺点:
- 误判率:由于哈希冲突的存在,布隆过滤器存在误判的可能性,即可能将不存在的元素判断为存在。
- 删除困难:布隆过滤器不支持元素的删除操作,因为删除元素可能会导致误判率增加。
- 无法获取元素本身:布隆过滤器只能判断元素是否存在,不能获取元素本身的值。
布隆过滤器可以用于解决缓存穿透的问题,同样的因为哈希冲突的存在,会有误判的情况但是误判仅仅是例如不存在放行不会出现存在但是拦截的情况的
添加元素
将要添加的元素分别通过k个哈希函数计算得到k个哈希值,这k个hash值对应位数组上的k个位置,然后将这k个位置设置为1。
我们添加一个data1素根据三个hash算法函数计算出的值,需要说明一点三个值可能会存在相同的值。
12-03
871
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
05-28