我正在使用guava bloom过滤器删除服务中的重复消息以接收日志。 Blooming过滤器有没有像guava缓存那样过期的方法呢?
答案 0 :(得分:4)
不,BloomFilter
没有任何删除功能。这也是不可能的,因为BloomFilter
会跟踪可能可能在一组对象中的内容。
从BloomFilter
中删除一个条目的条目会导致其他条目的误报。 BloomFilter
必须100%准确地确定集合中不的内容。
答案 1 :(得分:2)
你甚至无法从Guava的BloomFilter
中删除,更不用说自动过期了。
答案 2 :(得分:2)
如果您需要删除功能,请考虑使用 Counting Bloom Filter 。
答案 3 :(得分:1)
正如Tavian Barnes所建议的,这里的一个解决方案可能是创建一个包装BloomFilter
的类,并且(每天一次,或者经常你想要的)以原子方式替换BloomFilter
一个新的{{1}}并重新填充它。