我有应该累积到持久键值存储中的事件。在第一次插入密钥后24小时后,应该处理这个累积的记录并从商店中删除。 过期的数据处理分布在多个节点之间,因此使用数据库涉及处理同步问题。我不想使用任何SQL数据库。 对我来说最合适的可能是根据我的需要使用可配置的过期策略。有没有?或者可以用一些No-SQL数据库解决这个问题?
答案 0 :(得分:0)
应该可以使用infinispan或hazelcast等产品。
两者都兼容JSR107。
使用JSR107兼容的缓存API,可能的方法是通过CreatedExpiryPolicy设置24小时到期时间。接下来,实现并注册CacheEntryExpiredListener以在条目过期时进行调用。
对CacheEntryExpiredListener的调用可能是宽松的,并且依赖于实现。实际上,该事件是由于到期而被驱逐"驱逐"。例如,一个实现可以执行peridoc扫描并且每30分钟移除过期的条目。但是我认为"滞后时间"在大多数实现中都是可调的,因此您可以在定义的范围内操作。
同时检查您可能遇到的事件回调是否存在某些资源限制,如线程池。
我提到infispan或hazelcast有两个原因: