布隆过滤器BloomFilter解决什么问题

专门用来进行数据去重的数据结果

本质是一个大型位数组 + 多个无偏hash函数(分布均匀)

由一个初值为零的bit数组和多个哈希函数组成,用来判断某个数据是否存在,不是那么的精准,存在一定的误判概率

在这里插入图片描述

高效地插入和查询,占用空间少,返回的结果是不确定的,一个元素如果判断结果为存在,它不一定存在;不存在时,一定不存在。

布隆过滤器使用场景

只能添加元素,不能删除元素。

解决缓存穿透

先查询Redis缓存,如果Redis中没有,再查询MySQL。当数据库中也不存在这条数据时,每次查询都要访问数据库,这就是缓存穿透。

缓存黑名单、爬虫url去重,避免重复爬取

可以大大节省空间

布隆过滤器的使用

  1. 有,是可能有;无,是肯定无;
  2. 使用时,初始化值尽可能满足实际元素长度,避免扩容;
  3. 当实际元素数量超过初始长度时,应该对布隆过滤器进行重建,再将所有的历史元素批量添加进去