manejo library example cache java ehcache

java - library - Cómo diferenciar entre tiempo de vida y tiempo de inactividad en ehcache



java cache library (3)

Los documentos en ehache dicen:

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.

Entiendo timeToIdleSeconds

Pero, ¿significa que después de la creación y el primer acceso de un elemento de caché, timeToLiveSeconds ya no es aplicable?


De la antigua documentación 1.1 (disponible en Google Cache, que es más fácil de navegar y más informativa que los documentos actuales de AFAIK):

timeToIdleSeconds

Este es un atributo opcional.

Los valores legales son enteros entre 0 e Integer.MAX_VALUE.

Es la cantidad de segundos que un Elemento debería vivir desde la última vez que se usó. Medios usados ​​insertados o accedidos.

0 tiene un significado especial, que no es verificar que el elemento esté inactivo, es decir, estará inactivo para siempre.

El valor predeterminado es 0.

timeToLiveSeconds

Este es un atributo opcional.

Los valores legales son enteros entre 0 e Integer.MAX_VALUE.

Es la cantidad de segundos que un Elemento debería vivir desde que fue creado. Creado significa insertado en un caché utilizando el método Cache.put.

0 tiene un significado especial, que no es verificar el Elemento por el tiempo de vida, es decir, vivirá para siempre.

El valor predeterminado es 0.


Si establece ambos, el Math.min(ttlExpiry, ttiExpiry) será Math.min(ttlExpiry, ttiExpiry) , donde

ttlExpiry = creationTime + timeToLive ttiExpiry = mostRecentTime + timeToIdle

El código fuente completo here .


timeToIdleSeconds permite que el objeto almacenado en caché se guarde siempre que se solicite en períodos más cortos que timeToIdleSeconds . timeToLiveSeconds hará que el objeto en caché se invalide después de tantos segundos, independientemente de cuántas veces o cuando se solicitó.

Digamos que timeToIdleSeconds = 3 . Entonces el objeto se invalidará si no se ha solicitado durante 4 segundos.

Si timeToLiveSeconds = 90 , el objeto se eliminará de la memoria caché después de 90 segundos, incluso si se ha solicitado unos milisegundos en el 90º segundo de su corta vida útil.