Creación de Aplicaciones Node.js con Redis y Promesas

Clase 18 de 20Curso de Azure Cache para Redis

Resumen

Crear una aplicación de consola en Node.js que se comunique con un servicio de Redis en Azure es más sencillo de lo que parece. Con apenas dos librerías y unas pocas líneas de código, es posible establecer la conexión, autenticarse por TLS y ejecutar comandos básicos como ping, get y set. A continuación se explican los pasos esenciales para lograrlo y las buenas prácticas que marcan la diferencia.

¿Cómo preparar el entorno de Node.js para trabajar con Redis?

Antes de escribir cualquier línea de código, es necesario instalar dos dependencias fundamentales desde la consola de comandos [0:08]:

  • Redis: el cliente oficial que permite comunicarse con el servidor de Redis.
  • Bluebird: una librería que convierte funciones basadas en callbacks a promises, el estándar recomendado en Node.js moderno.

El cliente de Redis para Node.js no trae implementación nativa de promises, por lo que Bluebird resulta indispensable. Sin el soporte de promises, el código queda desactualizado frente a las prácticas actuales de desarrollo asíncrono.

Una vez instalados los paquetes, se crea un archivo JavaScript —en este caso llamado redis-test.js— y se importan ambas librerías con require [2:30]:

javascript const redis = require('redis'); const bluebird = require('bluebird');

Para habilitar promises en el cliente, se utiliza Bluebird para transformar tanto el Redis Client como el Redis Multi (el componente que administra la lógica de conexión y las operaciones en lote) [3:06].

¿Qué variables de entorno se necesitan para la conexión segura?

La conexión requiere dos variables de entorno que se obtienen desde el portal de Azure [3:50]:

  • Redis hostname: la dirección del servidor.
  • Redis key: la llave de autenticación.

En Linux, estas variables se exportan directamente desde la terminal. Mantenerlas como variables de entorno es una buena práctica de seguridad: evita exponer credenciales en el código fuente.

¿Cómo se configura el cliente de Redis con TLS?

La inicialización del cliente se realiza creando una variable connection con redis.createClient y tres bloques de configuración [4:48]:

javascript const cacheConnection = redis.createClient(6380, process.env.REDIS_HOSTNAME, { auth_pass: process.env.REDIS_KEY, tls: { servername: process.env.REDIS_HOSTNAME } });

  • Puerto 6380: el puerto estándar para conexiones seguras con Redis en Azure.
  • auth_pass: establece la autenticación usando la llave almacenada en la variable de entorno.
  • Objeto TLS: configura la conexión cifrada indicando el nombre del servidor. Es posible especificar versiones como TLS 1.1 o 1.2 de forma más granular, pero como mínimo se debe indicar contra qué servidor se establece la conexión segura.

¿Cómo verificar que la conexión funciona con ping y pong?

Gracias a la conversión con Bluebird, se puede llamar a cacheConnection.pingAsync(), que devuelve pong si la conexión es exitosa [6:10]. El resultado se imprime en consola y se cierra el proceso con process.exit() para evitar que la aplicación quede colgada.

Al ejecutar node redis-test.js, la respuesta pong aparece de inmediato, confirmando que el cliente es extremadamente rápido y ligero [7:22].

¿Cómo ejecutar operaciones get y set desde Node.js?

Con la conexión verificada, se pueden encadenar operaciones de lectura y escritura [8:00]:

  • getAsync: recupera el valor actual de una clave, por ejemplo plastic key.
  • setAsync: asigna un nuevo valor, en este caso concatenando un texto como "Hola desde Node.js" con un número aleatorio generado en tiempo de ejecución.
  • Se vuelve a llamar a getAsync para confirmar que el valor quedó almacenado correctamente en el caché.

javascript let value = await cacheConnection.getAsync('plastic key'); await cacheConnection.setAsync('plastic key', 'Hola desde node.js ' + Math.random()); value = await cacheConnection.getAsync('plastic key');

Al ejecutar el script, los resultados muestran el valor anterior, la asignación del nuevo valor con su número aleatorio y la lectura de confirmación [9:02]. Todo funciona sin complicaciones.

Este cliente, aunque liviano y mantenido por la comunidad, no soporta necesariamente todos los comandos disponibles. En comparación, la librería Jedis para Java se considera la más completa entre los distintos lenguajes.

Como práctica recomendada, queda implementar comandos para trabajar con listas, hashes, multiple get y multiple set. Para quienes buscan un reto adicional: crear un objeto, serializarlo como JSON, almacenarlo en Redis y luego recuperarlo. ¿Ya lo intentaste? Comparte tu experiencia en los comentarios.