任何人都可以告诉我Apache Ignite中是否有基于时间的触发策略?
我有一个对象有该到期日期当该日期(时间戳)到期我想要更新此值并在缓存中覆盖它是否可以在Apache Ignite
提前致谢
您可以使用急切的TTL:Apache Ignite在Expiry Policies中配置基于时间的过期策略。这样,在一定时间之后,对象将从缓存中急切地过期。
然后,您可以订阅javax.cache.event.CacheEntryExpiredListener,它将在每次到期后触发,并从该侦听器更新缓存。但是,当条目从缓存中已经过期并且在将值更新到缓存之前,看起来会有一个小窗口。
如果您不接受上述窗口,则可以定期查询缓存中的所有条目,并更新所有早于某个到期时间的条目。在这种情况下,您必须确保所有条目都有一个时间戳记,该索引将被编入索引并在SQL查询中使用。像这样的东西:
SELECT *来自SOME_TYPE,其中timestamp> 2;
有关SQL查询的更多信息,请访问:Distributed Queries,Local Queries。
也许是这样的:
cache.withExpiryPolicy(new CreatedExpiryPolicy(new Duration(TimeUnit.SECONDS, 123))).put(k, v);
到期时间仅适用于此条目。
对于触发器尝试连续查询:apacheignite.readme.io/docs/continuous-queries