でのApacheのIgniteキャッシュを構成する方法、私は、次の2つの有効期限ポリシーでキャッシュを設定したいと思います:例えば、複数の有効期限ポリシー
- TouchedExpiryPolicy
- CreatedExpiryPolicy
サンプルコード次のとおりです(Apache Igniteバージョン1.5.0.final):
public IgniteCache<String, Object> getOrCreateCache(String cacheName) {
Ignite ignite = Ignition.ignite();
CacheConfiguration<String, Object> cacheCfg = new CacheConfiguration<String, Object>(cacheName);
cacheCfg.setExpiryPolicyFactory(TouchedExpiryPolicy.factoryOf(new Duration(TimeUnit.SECONDS, 10)));
cacheCfg.setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(new Duration(TimeUnit.SECONDS, 30)));
IgniteCache<String, Object> igniteCache = ignite.getOrCreateCache(cacheCfg);
return igniteCache;
}
しかし問題は、第2期限政策が最初の政策に取って代わることである。キャッシュが両方の期限切れのポリシーを守るようにIgniteキャッシュを設定できる方法があれば驚くでしょうか?ありがとうございました。
<cache name="my-cache-name" ...
timeToIdleSeconds="10" timeToLiveSeconds="30"
...>
</cache>
参考文献:
Igniteでは、キャッシュごとに1つの 'ExpirePolicy'だけをグローバルに設定することもできます。だからあなたの提案はすべて私のために正しいと思う。 – dmagda
TTLとTTIを混在させる目的は、いずれかの基準が満たされたときにいつでもキャッシュを期限切れにすることです。 – Yuci
@Yuci、あなたがしようとしていることを理解しています。おそらく多くの人が2つのコンセプトを組み合わせたいと思うでしょう。しかし、それはそのようには設計されていません。項目が期限切れになるのは2つではなく、有効期限は1つだけです。 JSR107の問題追跡ツールでこれに関する問題を開いて、これに関するいくつかの意見を得ました:https://github.com/jsr107/jsr107spec/issues/355。おそらく、これを達成するためにIgniteにはまだ別の方法があります。 – cruftex