ehcacheで生存時間とアイドル時間を区別する方法


103

ehacheのドキュメントによると:

timeToIdleSeconds: Sets the time to idle for an element before it expires.
i.e. The maximum amount of time between accesses before an element expires

timeToLiveSeconds: Sets the time to live for an element before it expires.
i.e. The maximum time between creation time and when an element expires.

timeToIdleSecondsを理解しています

しかし、キャッシュアイテムの作成と最初のアクセスの後、timeToLiveSecondsはもう適用されないということですか?

回答:


156

timeToIdleSecondsキャッシュされたオブジェクトを、それよりも短い期間に要求されている限り保持することができますtimeToIdleSecondstimeToLiveSecondsキャッシュされたオブジェクトは、要求された回数やタイミングに関係なく、その数秒後に無効になります。

としましょうtimeToIdleSeconds = 3。その後、4秒間リクエストされなかった場合、オブジェクトは無効になります。

の場合timeToLiveSeconds = 90、オブジェクトは90秒後にキャッシュから削除されます。たとえ短い寿命の90秒で数ミリ秒要求されたとしてもです。


1
私たちは常に<TTLアイドル時間を設定したいと推定して
ジャック・ルネMesrine

上記のコメントで、「timeToIdleSeconds = 3.オブジェクトが4秒間要求されなかった場合、オブジェクトは無効化される」と言ったとき、無効化と言ったとき-どういう意味ですか?ヒープから削除しますか?オブジェクトがキャッシュから削除された場合、timeToLiveパラメーターの使用方法について混乱します。POCを実行すると、timetoIdleseconds後にデータがソースからフェッチされることがわかります。timetoLiveははるかに高い値ですが、今回のケースではtimetoLiveがtimeToIdleよりもはるかに高い値であるため、キャッシュからフェッチされると予想していました。
ガヤトリ

3
@Gayathri頻繁に(2秒ごとに)アクセスされるが60秒のTTLを持つデータ項目がある場合。継続的にアクセスされている(アイドル状態になっていない)場合でも、ソースから60秒ごとにプルされます。
C.ロス

8
最初のコメントのフォローアップとして(@JacquesRenéMesrineによる)。TTLとTTIの両方が設定されている(つまり、ゼロより大きい)場合:1)TTI> = TTL:TTIは効果がありません。エントリが考えられている有効期限が切れた後にcreationTime + TTL)2 TTI <TTL:エントリが考えられている有効期限が切れた後にmin((max(lastAccessTime, creationTime) + TTI), (creationTime + TTL))
ティムールMilovanov

「関わらず」 - >「に関係なく、」
マグヌス

41

両方を設定expirationTimeするとMath.min(ttlExpiry, ttiExpiry)、はになります。

ttlExpiry = creationTime + timeToLive
ttiExpiry = mostRecentTime + timeToIdle

ここで完全なソースコード。


1
今、私にはその行動が理にかなっています。特にこのMath.min部分について指摘していただきありがとうございます。
Prakash K

このコードは、上記の人間による説明よりも明確になります:-)
Maga Abdurakhmanov

22

古い1.1のドキュメント(現在のドキュメント私の知る限りより閲覧に簡単に、より有益であるGoogleのキャッシュで利用可能):

timeToIdleSeconds

これはオプションの属性です。

有効な値は0〜Integer.MAX_VALUEの整数です。

Elementが最後に使用されてから存続する秒数です。使用とは、挿入またはアクセスされることを意味します。

0には特別な意味があります。これは、要素がアイドルになるまでの時間をチェックしないことです。つまり、要素は永久にアイドル状態になります。

デフォルト値は0です。

timeToLiveSeconds

これはオプションの属性です。

有効な値は0〜Integer.MAX_VALUEの整数です。

エレメントが作成されてから存続する秒数です。作成とは、Cache.putメソッドを使用してキャッシュに挿入されることを意味します。

0には特別な意味があります。これは、要素の存続時間をチェックしないことです。つまり、要素は永久に存続します。

デフォルト値は0です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.