自首次写入后过期的Java缓存

自首次写入后过期的Java缓存,java,caching,cache-expiration,nosql,Java,Caching,Cache Expiration,Nosql,我有一些事件应该被累积到持久键值存储中。钥匙首次插入24小时后,应处理此累积记录并从存储中删除。 过期数据处理分布在多个节点之间,所以数据库的使用涉及处理同步问题。我不想使用任何SQL数据库。 最适合我的可能是一些缓存,根据我的需要配置过期策略。有吗?或者使用一些无SQL数据库可以解决这个问题吗?应该可以使用或之类的产品 两者都兼容JSR107 使用与JSR107兼容的缓存API,一种可能的方法是通过CreatedExpiryPolicy设置24小时到期时间。接下来,实现并注册CacheEntr

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

应该可以使用或之类的产品

两者都兼容JSR107

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

对CacheEntryExpiredListener的调用可能比较宽松,并且依赖于实现。实际上,该事件是在因到期而被逐出时触发的。例如,一个实现可以每30分钟进行一次peridoc扫描并删除过期条目。然而,我认为延迟时间在大多数实现中是可以调整的,所以您将能够在定义的范围内操作

还要检查您可能遇到的事件回调是否有一些资源约束,如线程池

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

您可能需要分发功能。 由于您执行长时间运行的处理并存储不可恢复的数据,因此可能需要持久性和容错功能。所以我想说,像谷歌番石榴这样的简单内存缓存已经超出了范围。 祝你好运