我们如何每隔n秒清空一次缓存(这样我们就可以对n秒窗口的数据运行查询 - 批处理窗口查询)?我只能在点火代码中找到基于FIFO和LRU的驱逐策略,其中驱逐策略基于添加或修改的缓存条目。
我知道我们可以使用CreatedExpiryPolicy
创建一个滑动窗口cfg.setExpiryPolicyFactory(FactoryBuilder.factoryOf(new CreatedExpiryPolicy(new Duration(SECONDS, 5))));
但我不认为这会帮助我维护批量窗口。 FIFO或LruEvictionPolicy也不会。
我需要一些基于某个静态时间窗口的驱逐策略(例如每5秒)。 我是否必须编写自己的实现?
答案 0 :(得分:2)
嗯,可以使用
为每个添加的条目更改ExpiryPolicyIgniteCache.withExpiryPolicy
并且每次计算剩余时间,但开销太大 - 每个条目都有自己的EvictionPolicy。
我建议安排使用cron based scheduling清除缓存的作业: