0

我有应该累积到持久键值存储中的事件。密钥首次插入后 24 小时后,应处理此累积记录并将其从存储中删除。过期数据处理分布在多个节点之间,因此数据库的使用涉及到处理同步问题。我不想使用任何 SQL 数据库。根据我的需要,最适合我的可能是一些具有可配置过期策略的缓存。有没有?或者可以用一些 No-SQL 数据库来解决这个问题吗?

4

1 回答 1

0

像infinispanhazelcast这样的产品应该是可能的。

两者都兼容 JSR107。

使用与 JSR107 兼容的缓存 API,一种可能的方法是通过 CreatedExpiryPolicy 设置 24 小时到期。接下来,您实现并注册 CacheEntryExpiredListener 以在条目过期时获取调用。

对 CacheEntryExpiredListener 的调用可能是宽松的并且依赖于实现。实际上,该事件是在“到期驱逐”时触发的。例如,一种实现可能会每 30 分钟执行一次 peridoc 扫描并删除过期条目。但是我认为“延迟时间”在大多数实现中是可调整的,因此您将能够在定义的范围内操作。

还要检查您可能遇到的事件回调是否存在一些资源限制,例如线程池。

我提到 infispan 或 hazelcast 有两个原因:

  • 您可能需要分发功能。
  • 由于您进行长时间运行的处理并存储不可恢复的数据,因此您可能需要持久性和容错功能。所以我想说像 Google Guava 这样的简单内存缓存超出了范围。

祝你好运!

于 2014-11-19T08:11:51.437 回答