Integrar Redis con una aplicación Java es más sencillo de lo que parece cuando se utiliza la librería Jedis, el cliente más completo disponible para este lenguaje. A través de Maven, variables de entorno y unas pocas líneas de código, es posible establecer conexión con un servidor de Azure Cache para Redis y ejecutar operaciones fundamentales como set, get y ping.
¿Cómo crear el proyecto Java con Maven?
El punto de partida es generar una aplicación de consola mediante Maven [0:15]. Se ejecuta un script de Maven que, aunque extenso, utiliza un template predeterminado para crear la estructura del proyecto. Una vez generado, el directorio resultante se llama Redis Test y se abre directamente en Visual Studio Code con el comando code ..
Dentro del editor conviene crear un archivo llamado scripts.azc para guardar todos los comandos utilizados durante el proceso. Esto facilita la referencia posterior y mantiene organizado el flujo de trabajo.
¿Por qué usar variables de entorno para la configuración?
Antes de escribir código, se crean dos variables de entorno [1:30] que almacenan:
- El nombre del servidor de Redis.
- La llave de acceso (access key) del servidor.
Estas variables son particulares para cada servidor. No se colocan valores fijos en el código, sino que se leen dinámicamente, lo que aporta seguridad y flexibilidad al momento de desplegar la aplicación.
¿Qué es Jedis y cómo se agrega al proyecto?
El siguiente paso ocurre en el archivo pom.xml [2:20], donde se agrega una nueva dependencia en la sección correspondiente. Jedis es una librería que permite conectar Java con Redis, de ahí su nombre. Se considera una de las librerías más completas para Redis, superando incluso a alternativas como StackExchange.Redis para .NET en cuanto a madurez y cobertura de comandos.
¿Cómo establecer la conexión con Redis desde Java?
Dentro del archivo principal de la aplicación se importan dos clases fundamentales [2:55]:
JedisShardInfo: configura los parámetros de conexión.
Jedis: actúa como el cliente real que se conecta al servidor.
La lógica de conexión requiere tres elementos clave:
- SSL habilitado: se indica que la comunicación será segura.
- Nombre del servidor: obtenido de la variable de entorno.
- Llave de acceso: también leída desde la variable de entorno.
El objeto JedisShardInfo recibe el nombre del servidor, el puerto y la configuración de SSL [3:40]. Sin embargo, falta un paso crítico: establecer la contraseña. Para ello se utiliza el método setPassword() pasándole la key de acceso. Finalmente, se crea el objeto Jedis con ese shard info como parámetro, y a partir de esa línea la conexión queda establecida.
java
JedisShardInfo shardInfo = new JedisShardInfo(cacheName, 6380, useSsl);
shardInfo.setPassword(cacheKey);
Jedis jedis = new Jedis(shardInfo);
¿Qué operaciones básicas se pueden ejecutar?
Con el cliente conectado, se ejecutan las operaciones más fundamentales de Redis [5:00]:
- Ping:
jedis.ping() envía un ping al servidor y espera la respuesta pong, confirmando que la conexión funciona.
- Set:
jedis.set("Platzi-key", value) asigna un valor aleatorio generado con Math.random() convertido a string.
- Get:
jedis.get("Platzi-key") recupera el valor actual almacenado en esa clave.
Los resultados se imprimen con System.out.println() para verificar cada operación en la consola.
¿Cómo compilar y ejecutar la aplicación?
Desde la terminal se usa mvn compile para compilar [7:10]. Si no hay errores, se procede a ejecutar con el comando correspondiente de Maven indicando la clase principal. Al correr la aplicación se observa la secuencia completa: el servidor responde pong, el get trae el valor previo, el set lo cambia y un segundo get confirma que el nuevo valor quedó almacenado.
Cada ejecución produce un valor diferente porque se utiliza Math.random(), lo que demuestra que la escritura y lectura en el caché funcionan correctamente.
Como ejercicio adicional, vale la pena experimentar con mset y mget para operaciones múltiples, probar comandos para listas y hashes, e incluso serializar un objeto Java como JSON dentro del caché para luego deserializarlo y verificar su consistencia. ¿Qué otros comandos de Redis te gustaría integrar en tu aplicación Java?