本质上布隆过滤器是一种数据结构,特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。
相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,
但是缺点是其返回的结果是概率性的,而不是确切的。
实现原理:
布隆过滤器是一个 bit 向量或者说 bit 数组,长这样:
综上都是基于判断集合中元素是否存在使用的。
存储每个元素只能是 0 或者 1,每个元素都只占用 1 bit 。
比如:一个100万的位数组占用大小应为
1000000Bit / 8 = 125000 Byte = 125000/1024 kb ≈ 122kb