EhCache

EhCache es uno de los frameworks más utilizados para el Cache De Objetos Java.
En general, EhCache consta de "regiones de cache" en donde se ubican objetos. Estas regiones se configuran en un archivo XML para determinar el tiempo de expiración, cantidad máxima de elementos, etc.

Ejemplo

Crearemos una región de cache llamada "dosIdeas". Luego, veremos cómo subir un objeto a dicha región, y cómo recuperarlo.

Archivo de configuración ehcache.xml

El archivo ehcache.xml tiene que residir en la raiz del classpath. En la raiz del jar de ehcache hay un archivo de configuración de ejemplo (ehcache-failsafe.xml), que tiene configurada una región predeterminada. Podemos copiar este archivo a nuestro proyecto y renombrarlo como ehcache.xml. A dicho archivo el agregaremos un región llamada "dosIdeas". Esta región mantendrá los elementos durante 1 segundo, y luego serán borrados de la región (atributo timeToLiveSeconds).
 name="dosIdeas"
           maxElementsInMemory="10000"
           maxElementsOnDisk="1000"
           eternal="false"
           overflowToDisk="true"
           timeToIdleSeconds="300"
           timeToLiveSeconds="1"
           memoryStoreEvictionPolicy="LFU"
            />

Accediendo al caché

Subiremos un elemento al cache, y luego lo recuperaremos. Por último, esperaremos unos segundos y veremos cómo al volver a recuperar el objeto, el mismo no está más. Este método se ejecuta dentro de un test de JUnit
@Test
    public void testCache() throws InterruptedException {
        Persona persona = new Persona();
        persona.setId("1");
        persona.setNombre("Zim");
 
        CacheManager manager = new CacheManager();
        Cache cache = manager.getCache("dosIdeas");
 
        //al cache se suben objetos Element. Un element consta de una clave y un valor.
        //La clave sera el medio para recuperar el objeto mas tarde. En el ejemplo, el "id" de la Persona.
        Element element = new Element(persona.getId(), persona);
        cache.put(element);
 
        Persona personaCache = (Persona) cache.get(persona.getId()).getObjectValue();
 
        assertEquals(persona, personaCache);
 
        //esperamos unos instantes para que expire el cache...
        Thread.sleep(1500);
 
        assertNull(cache.get(persona.getId()));
    }

Ver también

No hay comentarios:

Publicar un comentario en la entrada