hola mundo ejemplo para ehcache?


Ehcache es una bestia enormemente configurable, y los ejemplos son bastante complejos, a menudo involucrando muchas capas de interfaces.

Alguien se ha encontrado con el ejemplo más simple que simplemente almacena en caché algo así como un solo número en la memoria (no distribuido, no XML, tan pocas líneas de Java como sea posible). El número se almacena en caché durante, por ejemplo, 60 segundos, luego la siguiente solicitud de lectura hace que obtenga un nuevo valor (por ejemplo, llamando al azar.nextInt () o similar)

¿Es más rápido/más fácil escribir nuestra propia caché para algo como esto con un singleton y un poco de sincronización?

No hay primavera por favor.

 34
Author: wingnut, 2011-06-02

2 answers

EhCache viene con una configuración a prueba de fallos que tiene un tiempo de caducidad razonable (120 segundos). Esto es suficiente para ponerlo en marcha.

Importaciones:

import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;

Entonces, crear una caché es bastante simple:

CacheManager.getInstance().addCache("test");

Esto crea una caché llamada test. Puede tener muchos cachés diferentes y separados, todos administrados por el mismo CacheManager. Agregar (key, value) pares a esta caché es tan simple como:

CacheManager.getInstance().getCache("test").put(new Element(key, value));

Recuperar un valor para una clave dada es igual de simple as:

Element elt = CacheManager.getInstance().getCache("test").get(key);
return (elt == null ? null : elt.getObjectValue());

Si intenta acceder a un elemento después del período de vencimiento predeterminado de 120 segundos, la caché devolverá null (de ahí la comprobación para ver si elt es null). Puede ajustar el período de caducidad creando su propio archivo ehcache.xml - la documentación para eso es decente en el sitio de ehcache.

 38
Author: jbrookover,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-22 23:12:53

Una implementación de trabajo de la respuesta de jbrookover:

import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
import net.sf.ehcache.Cache;

public class EHCacheDemo  {
    public static final void main(String[] igno_red)  {
        CacheManager cchm = CacheManager.getInstance();

        //Create a cache
        cchm.addCache("test");

        //Add key-value pairs
        Cache cch = cchm.getCache("test");
        cch.put(new Element("tarzan", "Jane"));
        cch.put(new Element("kermit", "Piggy"));

        //Retrieve a value for a given key
        Element elt = cch.get("tarzan");
        String sPartner = (elt == null ? null : elt.getObjectValue().toString());

        System.out.println(sPartner);  //Outputs "Jane"

        //Required or the application will hang
        cchm.removeAllCaches();  //alternatively: cchm.shutdown();
    }
}
 13
Author: aliteralmind,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-01 15:24:39