Wie man in ehcache zwischen Time to Live und Time to Idle unterscheidet
Lesezeit: 3 Minuten
Jacques Rene Mesrine
Die Dokumente auf ehache sagt:
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.
Ich verstehe timeToIdleSeconds
Aber bedeutet es, dass nach der Erstellung und dem ersten Zugriff auf ein Cache-Element die timeToLiveSeconds gilt nicht mehr?
Boris Pavlović
timeToIdleSeconds ermöglicht, dass zwischengespeicherte Objekte so lange aufbewahrt werden, wie sie in Zeiträumen kürzer als angefordert werden timeToIdleSeconds. timeToLiveSeconds bewirkt, dass das zwischengespeicherte Objekt nach dieser Anzahl von Sekunden ungültig wird, unabhängig davon, wie oft oder wann es angefordert wurde.
Sagen wir das timeToIdleSeconds = 3. Dann wird das Objekt ungültig gemacht, wenn es 4 Sekunden lang nicht angefordert wurde.
Wenn timeToLiveSeconds = 90dann wird das Objekt nach 90 Sekunden aus dem Cache entfernt, auch wenn es einige Millisekunden in der 90. Sekunde seines kurzen Lebens angefordert wurde.
Also nehme ich an, dass wir immer Idletime < ttl setzen wollen
– Jacques René Mesrine
21. April 2010 um 3:41 Uhr
Wenn Sie im Kommentar oben sagen: “Sagen wir mal, timeToIdleSeconds = 3. Das Objekt wird ungültig gemacht, wenn es 4 Sekunden lang nicht angefordert wurde.”, wenn Sie “ungültig machen” sagen – was bedeutet das? Entfernt es es vom Haufen? Wenn das Objekt aus dem Cache entfernt wird, bin ich verwirrt darüber, was die Verwendung des timeToLive-Parameters überhaupt ist. Als wir den POC durchgeführt haben, sehen wir, dass Daten nach timetoIdleseconds von der Quelle abgerufen werden. Obwohl timetoLive einen viel höheren Wert hat, hätte ich erwartet, dass er aus dem Cache abgerufen wird, da timetoLive in unserem Fall einen viel höheren Wert als timeToIdle hat.
– Gayathri
30. Januar 2011 um 16:45 Uhr
@Gayathri Wenn Sie ein Datenelement hatten, auf das häufig zugegriffen wird (alle zwei Sekunden), aber eine TTL von sechzig Sekunden hat. Es würde immer noch einmal alle sechzig Sekunden aus der Quelle gezogen werden, selbst wenn kontinuierlich darauf zugegriffen wird (nie im Leerlauf).
– Kreuz
1. März 2013 um 14:38 Uhr
Als Fortsetzung des ersten Kommentars (von @JacquesRenéMesrine). Für den Fall, dass sowohl TTL als auch TTI gesetzt sind (dh größer als Null): 1) TTI >= TTL: TTI hat Kein Effekt. Der Eintritt wird berücksichtigt abgelaufen nach creationTime + TTL 2) TTI < TTL: Eintritt wird berücksichtigt abgelaufen nach min((max(lastAccessTime, creationTime) + TTI), (creationTime + TTL))
– Timur Milovanov
9. Dezember 2015 um 15:44 Uhr
“egal” -> “egal”
– Magnus
18. September 2017 um 16:50 Uhr
Wenn Sie beide einstellen, wird die expirationTime wird sein Math.min(ttlExpiry, ttiExpiry)wo
Jetzt macht das Verhalten für mich Sinn. Vielen Dank für den Hinweis, insbesondere die Math.min Teil.
– Prakasch K
24. Juli 2015 um 10:04 Uhr
Dieser Code macht es klarer als die menschliche Erklärung oben 🙂
– Magomed Abdurachmanow
17. November 2017 um 12:56 Uhr
Von dem alte 1.1-Dokumentation (verfügbar in Google Cache, das einfacher zu durchsuchen und informativer ist als die aktuellen Dokumente AFAIK):
timeToIdleSeconds
Dies ist ein optionales Attribut.
Zulässige Werte sind Ganzzahlen zwischen 0 und Integer.MAX_VALUE.
Es ist die Anzahl der Sekunden, die ein Element seit seiner letzten Verwendung leben sollte. Benutzt bedeutet eingefügt oder abgerufen.
0 hat eine besondere Bedeutung, die darin besteht, das Element nicht auf Leerlaufzeit zu prüfen, dh es wird für immer im Leerlauf bleiben.
Der Standardwert ist 0.
timeToLiveSeconds
Dies ist ein optionales Attribut.
Zulässige Werte sind Ganzzahlen zwischen 0 und Integer.MAX_VALUE.
Es ist die Anzahl der Sekunden, die ein Element leben sollte, seit es erstellt wurde. Erstellt bedeutet mit der Methode Cache.put in einen Cache eingefügt.
0 hat eine besondere Bedeutung, die darin besteht, das Element nicht auf Lebenszeit zu prüfen, dh es wird für immer leben.
Der Standardwert ist 0.
13115400cookie-checkWie man in ehcache zwischen Time to Live und Time to Idle unterscheidetyes