100 votes

Comment différencier le temps de vie et le temps d'inactivité dans ehcache ?

Les docs sur ehache disent :

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.

Je comprends timeToIdleSeconds

Mais est-ce que cela signifie qu'après la création et le premier accès d'un élément du cache, le timeToLiveSeconds n'est plus applicable ?

151voto

Boris Pavlović Points 22207

timeToIdleSeconds permet de conserver l'objet mis en cache aussi longtemps qu'il est demandé dans des périodes plus courtes que la durée de vie de l'objet. timeToIdleSeconds . timeToLiveSeconds fera en sorte que l'objet mis en cache soit invalidé après ce nombre de secondes, quel que soit le nombre de fois ou le moment où il a été demandé.

Disons que timeToIdleSeconds = 3 . Ensuite, l'objet sera invalidé s'il n'a pas été demandé pendant 4 secondes.

Si timeToLiveSeconds = 90 l'objet sera supprimé du cache après 90 secondes, même s'il a été demandé quelques millisecondes dans la 90e seconde de sa courte vie.

40voto

CK Lee Points 2041

Si vous définissez les deux, le expirationTime sera Math.min(ttlExpiry, ttiExpiry)

ttlExpiry = creationTime + timeToLive
ttiExpiry = mostRecentTime + timeToIdle

Code source complet aquí .

22voto

Damo Points 7792

De la ancienne documentation 1.1 (disponible dans Google Cache, qui est plus facile à parcourir et plus informatif que les documents actuels AFAIK) :

timeToIdleSeconds

Il s'agit d'un attribut facultatif.

Les valeurs légales sont des entiers compris entre 0 et Integer.MAX_VALUE.

C'est le nombre de secondes que doit vivre un élément depuis qu'il a été dernière utilisation. Utilisé signifie inséré ou consulté.

0 a une signification particulière, qui est de ne pas vérifier l'élément pour le temps à l'élément, c'est-à-dire qu'il restera en veilleuse pour toujours.

La valeur par défaut est 0.

timeToLiveSeconds

Il s'agit d'un attribut facultatif.

Les valeurs légales sont des entiers compris entre 0 et Integer.MAX_VALUE.

C'est le nombre de secondes pendant lesquelles un Ele créé. Créé signifie inséré dans un cache à l'aide de la méthode Cache.put Cache.put.

0 a une signification spéciale, qui est de ne pas vérifier l'élément pour le temps à vivre, c'est-à-dire qu'il vivra éternellement.

La valeur par défaut est 0.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X