2010-02-26 16 views
5

Mi aplicación web Java (tomcat) obtiene todos sus datos de una base de datos SQL. Sin embargo, gran parte de esta base de datos solo se actualiza una vez al día a través de un trabajo por lotes. Como las consultas en estas tablas tienden a ser bastante lentas, quiero almacenar en caché los resultados.Caché con tiempo de caducidad fijo en Java

Antes de rodar mi propia solución, quería ver las soluciones de caché existentes para Java. Obviamente, busqué stackoverflow y encontré referencias y recomendaciones para ehcache.

Pero mirando la documentación parece que solo permite establecer la duración de los objetos almacenados en caché (por ejemplo, caducar 1 hora después), mientras que quiero un vencimiento en un tiempo fijo (por ejemplo, caducar a las 0h30 a.m.) .

¿Alguien conoce una biblioteca de caché que permita dicho comportamiento de caducidad? ¿O cómo hacer esto con ehcache si eso es posible?

Respuesta

5

EhCache le permite establecer programáticamente la duración de caducidad en un elemento de caché individual al crearlo. Los valores configurados en ehcache.xml son valores predeterminados.

Si conoce el tiempo absoluto específico en el que el elemento debe caducar, puede calcular la diferencia en segundos entre entonces y "ahora" (es decir, el tiempo que agrega al caché), y configurarlo como el tiempo-a -viva la duración, usando Element.setTimeToLive()

1

¿Necesita una solución de memoria caché completa? Utiliza mapas estándar y luego tiene un trabajo programado para borrarlos en el momento requerido.

+1

Esa es mi propia opción de solución :), ciertamente viable, pero si existe una buena solución de terceros, obviamente preferiría eso. – Pieter

Cuestiones relacionadas