布隆过滤器是一种数据结构,可以用来判断一个元素是否在一个集合中。很常用的一个功能是用来去重。
相比于数据库和 Redis set,使用布隆过滤器可以很好的避免性能和内存占用的问题。
-
使用 K 个哈希函数对元素值进行 K 次计算,得到 K 个哈希值。
-
根据得到的哈希值,在位数组中把对应下标的值置为 1
当要判断一个值是否在布隆过滤器中,对元素再次进行哈希计算,得到值之后判断位数组中的每个元素是否都为 1,如果值都为 1,那么说明这个值在布隆过滤器中,如果存在一个值不为 1,说明该元素不在布隆过滤器中。
布隆过滤器存在误判,如果判断不存在 ,那么一定不存在。如果存在,则不一定存在。
参考: