布隆过滤器是什么?
1970年, 一个叫布隆的小伙子提出的布隆过滤器
布隆过滤器实际上是一个很长的二进制向量和一系列随机映射函数.
简单理解就是一个bit数组, 默认每个值都是0 , 在插入数据时, 将一个key值进行多次hash运算得到多个hash值, 然后把bit数组对应的多个索引位置改为1, 就标记了这个key是可以查到值的
在查询数据时, 就可以根据key进行与上面相同的运算得到的多个hash运算结果是否都是1, 判断查询的数据是否存在, 如果存在就放行, 如果不存在则进行处理 .
布隆过滤器是干什么的:
是可以防止缓存穿透问题: 有人恶意生成大量的key, 这些key数据库中是没有数据的, 所以缓存中自然也没有, 就直接穿透缓存去查库, 从而压垮数据库
布隆过滤器优缺点:
优点:
查询快, 占用存储空间也小;
缺点:
删除困难和存在误判(hash冲突导致),可能不存在的数据经过hash运算与之前存过的数据得到相同hash值, 被认为是存在, 然后就会放行 ,但是可以手动指定误差率.