Java缓存自首次写入后到期

时间:2014-11-18 23:08:14

标签: java caching cache-expiration nosql

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

1 个答案:

答案 0 :(得分:0)

应该可以使用infinispanhazelcast等产品。

两者都兼容JSR107。

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

对CacheEntryExpiredListener的调用可能是宽松的,并且依赖于实现。实际上,该事件是由于到期而被驱逐"驱逐"。例如,一个实现可以执行peridoc扫描并且每30分钟移除过期的条目。但是我认为"滞后时间"在大多数实现中都是可调的,因此您可以在定义的范围内操作。

同时检查您可能遇到的事件回调是否存在某些资源限制,如线程池。

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

  • 您可能需要分发功能。
  • 由于您长时间运行处理并存储无法恢复的数据,因此您可能需要持久性和容错功能。所以我想说一个简单的内存缓存就像Google Guava一样不在范围内。
祝你好运!