【发布时间】:2014-03-03 07:52:48
【问题描述】:
我正在使用番石榴布隆过滤器来删除服务中的重复消息以接收日志。 有没有办法让布隆过滤器像番石榴缓存一样过期?
【问题讨论】:
-
以下答案是正确的,但您是否希望每天都使 整个 缓存失效,而不是单个条目?
标签: guava bloom-filter
我正在使用番石榴布隆过滤器来删除服务中的重复消息以接收日志。 有没有办法让布隆过滤器像番石榴缓存一样过期?
【问题讨论】:
标签: guava bloom-filter
不,BloomFilter 没有任何删除功能。这也是不可能的,因为BloomFilter 会跟踪可能可能在一组对象中的内容。
从BloomFilter 中删除一个条目会导致其他条目出现误报。 BloomFilter 必须 100% 准确地了解集合中不是的内容。
【讨论】:
你甚至不能从 Guava 的 BloomFilter 中删除,更不用说自动过期条目了。
【讨论】:
如果您需要删除功能,请考虑使用 Counting Bloom Filter。
【讨论】:
正如 Tavian Barnes 所建议的,这里的一个解决方案可能是创建一个包装 BloomFilter 的类,并且(一天一次,或者您想要的任何频率)原子地将 BloomFilter 替换为一个新的并重新填充它。
【讨论】:
【讨论】: