---
title: 'JCache'
---
JCache
===
Guía de desarrollo y utilizacion
===
* **Coordinador Tecnológico:** Rafael Palau
* **Arquitecto:** Marcelo Lopez
* **Consultores:**
Marcos Benítez
Julio Melo
## Introducción
Esta guia describe los pasos para la utilizacion de Cache en las clases y una arquitectura de esta implementacion.
## Objetivo
* Introducir al desarrallador en los conceptos de cache
* Introduccion de arquitectura de cache
* Conceptos de NearCache
* Incorporacion de Redis Pub/Sub (nearcache with notifications)
* Ejemplo y caso de uso.
## Anotaciones
Para poder utilizar el cache se debe utilizar la siguiente anotacion:
- NearCache
## Configuracion de Cache
Para la configuracion del cache o extensiones adicionales sobre el mismo se pueden utilizar las siguientes opciones:
- [x] ttl, esta opcion determina cual es el vencimiento del cache en minutos.
- [x] cacheName, permite sobreescribir el nombre del cache.
## Caso de uso
Para la utilizacion del cache se muestra el siguiente ejemplo:
```java=
package py.gov.siare.ejemplo;
import py.gov.siare.siarecommon.annotation.NearCache;
import py.gov.siare.siarecommon.annotation.ExcludeCache;
@Component
public class FooComponent {
@NearCache(ttl = 10)
public List<Foo> getFoos(String target) {
List<Foo> foos = svc.getFoos(target);
return foos;
}
@NearCache(ttl = 5, cacheName= "other")
public List<Foo> getFoos(String target, Boolean enabled) {
List<Foo> foos = svc.getFoos(target, enabled);
return foos;
}
@NearCache(ttl=10)
public List<Foo> getFoos(String target, Boolean enabled, @ExcludeCache() Boolean generado) {
List<Foo> foos = svc.getFoos(target, enabled);
return foos;
}
}
```
En el ejemplo anterior se muestra la utilizacion del cache con los siguientes atributos:
- Metodo getFoos(String target), ejecuta el cache y retiene los datos del mismo por **10 minutos**.
- Metodo getFoos(String target, Boolean enabled), ejecuta el cache y retiene los datos por 5 minutos y sobreescribe el nombre del cache.
## Utilizacion de sobreescritura de nombre de cache
Se recomienda la sobreescritura del nombre del cache en los casos en que se sobrecargen los metodos como es el caso del ejemplo.
## Excluir parametros de cache
Para poder explir parametros que son usados para el calculo del hash, se debe utilizar la anotacion @ExcludeCache.