2009-03-04 14 views
8

me gustaría poner en práctica el siguiente algoritmo anterior Ehcache:recuperar objetos caducados en Ehcache

  • tratar de conseguir un elemento de la caché
  • si el elemento no ha caducado
    • sirven al valor
  • demás
    • servir el valor expirado
    • regenerar el elemento en el fondo

Pero nunca consigo un elemento caducado (Element.isExpired()). Traté de jugar con mi configuración de caché (especialmente TimeToLive y TimeToIdle) pero parece que no puedo hacer que funcione como quiero. Puedo enumerar las claves en la memoria caché, pero si "obtengo()" un elemento caducado, siempre obtengo un valor nulo.

¿Qué estoy haciendo mal?

+1

Simplemente curioso, ¿alguna vez se le ocurrió una solución o un enfoque alternativo a esto? –

Respuesta

4

No está haciendo nada mal. La documentación dice que obtener un elemento caducado lo eliminará de la memoria caché y devolverá nulo.

Sospecho que la única vez que un elemento aparecerá como caducado es si tiene un detector de eventos para eventos de caducidad de elementos, pero no puedo decir que lo haya probado alguna vez.

+0

Preste atención con el detector de eventos (notifyElementExpiry). Solo la clave del elemento es conocida. De acuerdo con la siguiente frase en la API: como el Elemento ha expirado, solo se conoce la clave del elemento. Solo tuve problemas con esto. – schoeggii