Bloom过滤器仅用于存储最后50个数据内容

sha*_*gul 5 java bloom-filter data-structures

在我的系统中,将有一个主节点和n个从属节点,其中主节点将传入请求分发到其一个从节点.为了利用缓存内容,我想跟踪从节点已经服务的最后50个请求(传入请求的哈希)(假设最后50个请求已经存在于缓存中,那么节点将快速提供请求).据我所研究,在bloom过滤器中删除很困难.但它也可以通过计数过滤器来完成.是否真的可以将布隆过滤器保持为移动窗口(就像在50请求之后它应该从前端删除以容纳新请求).是否真的可以这样做或者是否有任何其他过滤器如布隆过滤器(它应该足够快以检查元素的存在).

tem*_*def 5

如果您只有50件事情需要跟踪,我认为Bloom过滤器不是一个合适的数据结构.如果数据无法保存在内存中并希望进行预过滤以消除某些远程数据结构(如远程数据库)中不必要的查找,则Bloom过滤器很有用.如果您只有50个元素,那么使用哈希表之类的东西来存储这些值几乎肯定会更好,因为您可以在预期的O(1)时间内获得具有最小空间开销的精确答案.

如果你想跟踪你看过的最后50个元素,可以考虑查看一个链接的哈希表,它在O(1)时间内支持insert,lookup,delete和delete-eldest.Java LinkedHashMap应该很棒.

希望这可以帮助!