我有一个用例,我需要尽可能高效地检查150亿条记录中的哈希肯定不存在(和计数)。这些检查以每秒数千次的速度进行。 我真的很喜欢Redis bloom filter实现,我正在测试我的bloom过滤器。我正在创建15个过滤器,每个过滤器包含1b条记录:
127.0.0.1:6379> bf.reserve articles15 0.1 1000000000
据我了解布隆过滤器,如果bf.exists
的结果为0
,则可以确定过滤器中不存在该元素。这就是我所关心的。我不关心漏报,因为我永远不会检查1
在上面的命令中,0.1是Redis调用它的错误率,a.k.a。概率。
实际问题:我可以安全设置的最高数字是什么,以获得最小可能的布隆过滤器大小? Redis允许我设置偶数1
,但我认为这不起作用。我可以设置0.9
吗?
答案 0 :(得分:2)
理论上你可以,但这没有任何意义。如果你不关心漏报,只要假设一切都是0并且假阴性率为100%:)
所以你在某种程度上关心假阴性,或者你不会使用布隆过滤器,对吧?现在问问自己,你真正需要什么。