布隆过滤器实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。(通过一定的错误率来降低内存的占用)
布隆过滤器使用二进制向量结合hash函数来记录任意一条数据是否已经存在于集合中。但是存在一定的误判率,如果它告诉你数据存在,那么就有可能不存在;如果它告诉你数据不存在,那么就一定不存在。
![](https://img.haomeiwen.com/i24459569/cdb3f2806dadee77.png)
降低错误率:
- 加大bit数组的长度
- 增加hash函数的个数(这两个方法都要控制好度)
应用场景:
- 比特币网络
- 网页爬虫对 URL 去重,避免爬取相同的 URL 地址
- 反垃圾邮件,从数十亿个垃圾邮件列表中判断某邮箱是否垃圾邮箱
- Redis缓存
网友评论