OSCache: Sistema de caché para aplicaciones Java

2
21764

OSCache: Sistema de caché para aplicaciones Java

Índice de contenido

Introducción

Normalmente hay secciones y datos dentro de nuestras aplicaciones que no varían con frecuencia o cuya frecuencia está controlada y es conocida.
Además, obtener esta información es costosa en tiempo o recursos informáticos.. pues bien, es obvio que si cacheamos esta información el rendimiento de nuestra aplicación incrementará
y por lo tanto la satisfacción de los usuarios que la utilizan también mejorará.

En este tutorial vamos a ver uno de los sistemas de caché más extendidos y aceptados, se trata de OSCache


Caso de estudio: Aplicación de escritorio

A continuación, vamos a programar una sencilla aplicación de escritorio en donde aprenderemos a realizar las tareas de cacheo, descacheo y acceso a la información cacheada. Se trata de una sencilla aplicación en donde cada operación se realiza al hacer clic en un botón, y en donde se mostrará el tiempo que transcurre desde que se inicia la tarea hasta que finaliza. Para ello, se simula el acceso a una fuente de datos cuyo costo en tiempo es bastante elevado, por lo que decidimos cachearlo.

La intención de esta sencilla aplicación es que aprenda y observe lo que va sucediendo al acceder a datos cacheados, acceder a datos que no han sido cacheados, etc.

Configuración de OSCache para este ejemplo

OSCache se configura fácilmente a través de un archivo de configuración de nombre oscache.properties.

Aunque para usarlo no hay por que tocar nada, en este tutorial vamos a cambiar el comportamiento de por defecto (cache en memoria sin límite en el número de elementos a cachear) para habilitar el cacheo en disco,
de manera que si la aplicación se cierra no haya que volver a cachear los datos.

Desde mi punto de vista las propiedades que he modificado son las más importantes, así que observe los comentarios para conocer su significado.

Para más información dirigase a la documentación de configuración oficial.

Código fuente de la aplicación:

La siguiente clase simula un acceso lento (2 segundos) para obtener una información que luego será cacheada.

La siguiente clase representa una ventana con distintos botones cuyas tareas estarán realicionadas con operaciones con la caché.

Si observa la configuración de OSCache para esta aplicación, la caché en disco está habilitada, de manera que en la siguiente imagen se puede observar como OSCache crea y destruye los archivos en donde guarda la información cacheada:

Nota: Al estar habilitada la cache en disco, si cierra la aplicación y la vuelve abrir verá que los datos sigen estando cacheados, es decir, los tiempos de lectura tienden a cero.
(En este caso la cache tiene un tiempo de validez de 120 segundos desde que fué cacheada).

Caso de estudio: Aplicación Web.

OScache, además de ser un sistema de cache de propósito general sobre el cuál podemos cachear objetos. Incluye una librería de Tags y un filtro que proporcionan de forma sencilla la posibilidad de cachear secciones o páginas completas de JSP de nuestras aplicaciones Web.

Si desea más información al respecto, le recomiendo que lea el siguiente tutorial. Ver el tutorial.

Referencias a otros sistemas de caché Open Source

El siguiente enlace se enumeran otros sistemas de caché Open Source:

Open Source cache Solutions in Java

Conclusiones

Bueno como veis es bastante sencillo de integrar en nuestras aplicaciones y las mejoras de rendimiento pueden ser notables.. Eso sí, para la gente nueva en este tema, conviene profundizar más al respecto y elegir bien los puntos estratégicos a cachear.

Carlos García Pérez. Creador de MobileTest, un complemento educativo para los profesores y sus alumnos.

cgpcosmad@gmail.com

2 Comentarios

  1. amigo mucha gracias por la Información, me surge una pregunta: Tengo una aplicación de Escritorio en Java SE (Swing) donde se conecta a un DB en un CPANEL de MySql, todo funciona perfecto; pero cuando se cae el Internet, muere la aplicación… con este método puedo hacer que guarde en caché, que conserve los consecutivos, la data etc … y que luego valide si hay internet y procesa a sincronizar ?

Dejar respuesta

Please enter your comment!
Please enter your name here