Wie man in ehcache zwischen Time to Live und Time to Idle unterscheidet

Lesezeit: 3 Minuten

Benutzer-Avatar
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?

Benutzer-Avatar
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

ttlExpiry = creationTime + timeToLive
ttiExpiry = mostRecentTime + timeToIdle

Vollständiger Quellcode hier.

  • 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.

1311540cookie-checkWie man in ehcache zwischen Time to Live und Time to Idle unterscheidet

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy