布隆过滤器
理论
布隆过滤器就是把一个值进行hash运算,存放在bit数组里,每个值都为0,1,然后在后面再判断是否有这个值的时候,也进行相同的hash运算,在各个数组里判断是否都是1,再进行判断是否存在。
优点
存放需要的内存空间很小,可以帮助数据查询的时候过滤掉许多不需要的查询,减少数据库击穿的概率。在保密性上有优势,不容易泄露隐私数据。
缺点
不支持删除数据,会有一定的误判处理,每次查询之后如果需要知道准确的值,需向数据库缓冲区(或数据库)调取数据。如果需要重要数据删除,需要重构过滤器。
编码建议
在进行hash函数赋值时推荐使用质数,能够很好的降低错误率。
记得设定布隆过滤器的比特长度,2的24次方
如有需要Google有已经编写好guava 的布隆过滤器。
随着k,m数组位数的增加,假阳性的概率也会降低。如何确定k的值?