在 apache Ignite 中触发

trigger in apache Ignite

任何人都可以告诉我 Apache Ignite 中是否有可用的基于时间的触发策略?

我有一个对象在该日期(时间戳)过期时具有过期日期我想更新此值并在缓存中覆盖它是否可以在 Apache Ignite 中使用

提前致谢

您可以在 Apache Ignite with eager TTL: Expiry Policies 中配置基于时间的过期策略。这样,对象将在一定时间后从缓存中急切过期。

然后你可以订阅一个javax.cache.event.CacheEntryExpiredListener,它会在每次到期后触发,并从那个监听器更新缓存。但是,当条目已经从缓存中过期并且在您将值和更新值放入缓存之前,看起来会有一个小 window。

如果上述window对您来说不可接受,那么您可以简单地定期从缓存中查询所有条目,并更新所有超过特定过期时间的条目。在这种情况下,您必须确保所有条目都有一个时间戳归档,该时间戳将被索引并用于 SQL 查询。像这样:

SELECT * 来自 SOME_TYPE where 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