布隆过滤器BloomFilter解决什么问题
专门用来进行数据去重的数据结果
本质是一个大型位数组 + 多个无偏hash函数(分布均匀)
由一个初值为零的bit数组和多个哈希函数组成,用来判断某个数据是否存在,不是那么的精准,存在一定的误判概率

高效地插入和查询,占用空间少,返回的结果是不确定的,一个元素如果判断结果为存在,它不一定存在;不存在时,一定不存在。
布隆过滤器使用场景
只能添加元素,不能删除元素。
解决缓存穿透
先查询Redis缓存,如果Redis中没有,再查询MySQL。当数据库中也不存在这条数据时,每次查询都要访问数据库,这就是缓存穿透。
缓存黑名单、爬虫url去重,避免重复爬取
可以大大节省空间
布隆过滤器的使用
- 有,是可能有;无,是肯定无;
- 使用时,初始化值尽可能满足实际元素长度,避免扩容;
- 当实际元素数量超过初始长度时,应该对布隆过滤器进行重建,再将所有的历史元素批量添加进去