Pregunta
Estoy buscando una API de almacenamiento en caché de objetos en memoria de Java. ¿Alguna recomendación? ¿Qué soluciones ha utilizado en el pasado?
Actual
En este momento, solo estoy usando un mapa:
Map cache = new HashMap<String, Object>();
cache.put("key", value);
Requisitos
Necesito extender el caché para incluir características básicas como:
- tamaño máximo
- Tiempo para vivir
Sin embargo, no necesito funciones más sofisticadas como:
- Acceso desde múltiples procesos (servidor de caché)
- Persistencia (al disco)
Sugerencias
Almacenamiento en caché en memoria:
- Guava CacheBuilder - desarrollo activo. Vea esta presentación .
- LRUMap : configuración a través de API. Sin TTL. No está diseñado específicamente para el almacenamiento en caché.
- whirlycache : configuración XML. Lista de correo. Última actualización 2006.
- cache4j : configuración XML. Documentación en ruso. Última actualización 2006.
Almacenamiento en caché empresarial:
@Cacheable
desde jcabi-aspectos : yegor256.com/2014/08/03/cacheable-java-annotation.htmlRespuestas:
EHCache es muy bueno. Puede crear un caché en memoria. Consulte sus ejemplos de código para ver un ejemplo de cómo crear un caché en memoria. Puede especificar un tamaño máximo y un tiempo de vida.
EHCache ofrece algunas funciones avanzadas, pero si no está interesado en usarlas, no lo haga. Pero es bueno saber que están ahí si sus requisitos cambian.
Aquí hay un caché en memoria. Creado en código, sin archivos de configuración.
Crea un caché que contendrá 200 elementos y tiene un ttl de 24 horas.
fuente
Me gusta mucho el
MapMaker
que viene con Google Guava ( API )JavaDoc tiene un ejemplo bastante bueno que demuestra tanto su facilidad de uso como su poder:
Además, la versión 10.0 de Guava introdujo un
com.google.common.cache
paquete mucho más extenso (hay una buena entrada en la wiki sobre cómo usarlos ).fuente
También puede consultar mi pequeña biblioteca de caché llamada KittyCache en:
https://github.com/treeder/kitty-cache
Hay algunos puntos de referencia de rendimiento frente a ehcache.
Se utiliza en el proyecto SimpleJPA como caché de segundo nivel.
fuente
Puede consultar LinkedHashMap para implementar un caché simple sin archivos jar de terceros:
entonces puedes obtener del caché como
resto a la izquierda como ejercicio para el lector :)
fuente
MapMaker de Guava ha sido reemplazado por su clase CacheBuilder .
fuente
JCS está probado y es cierto. A pesar de que es liviano en lo que respecta a los mecanismos de almacenamiento en caché, puede profundizar en el código real e imitar lo que hacen con HashMap debajo de las cubiertas para exactamente lo que necesita y nada más. Parece tener una idea bastante clara de lo que está buscando.
fuente
memcached tiene cliente para Java. http://www.danga.com/memcached/ Requiere un proceso separado para ser un servidor de almacenamiento en caché, pero algo poderoso.
fuente