Cliente Redis para JavaScript (Node.js) — ioredis
\n\nRedis es un almacén de datos de tipo clave-valor de alto rendimiento, que se utiliza a menudo para almacenamiento en caché, gestión de sesiones, colas de mensajes y sistemas Pub/Sub. Para trabajar con Redis desde Node.js existen varias bibliotecas, pero una de las más potentes y populares es ioredis. Esta biblioteca está diseñada para aplicaciones modernas que requieren alto rendimiento, soporte para agrupación en clústeres, transacciones y procesamiento de datos en flujo.
\n\n¿Qué es ioredis?
\nioredis es un cliente Redis completo para Node.js, escrito en JavaScript. Soporta todas las funcionalidades de Redis, incluyendo agrupación en clústeres, modos Sentinel, canalización (pipelining), transacciones (MULTI/EXEC), scripts Lua, Pub/Sub, así como trabajo con estructuras similares a MapReduce. La biblioteca se desarrolla activamente y es utilizada en producción por muchas empresas.
\n\nInstalación de ioredis
\nLa instalación se realiza a través de npm:
\nnpm install ioredis\nDespués de la instalación, puede conectarse al servidor Redis:
\nconst Redis = require('ioredis');\nconst redis = new Redis(); // por defecto localhost:6379\n\nFuncionalidades principales de ioredis
\n- \n
- Facilidad de uso — API intuitiva, similar a los comandos de Redis. \n
- Soporte para Promise y async/await — todas las operaciones asíncronas devuelven promesas. \n
- Agrupación en clústeres — distribución automática de solicitudes entre los nodos del clúster. \n
- Sentinel — conmutación automática al servidor de respaldo en caso de fallo. \n
- Canalización (Pipelining) — envío de múltiples comandos en una sola solicitud para mejorar el rendimiento. \n
- Pub/Sub — suscripción a canales e intercambio de mensajes en tiempo real. \n
- Soporte para scripts Lua — ejecución de operaciones atómicas en el lado del servidor. \n
- Monitoreo y eventos — seguimiento del estado de la conexión y errores. \n
Ejemplos de uso de ioredis
\n\nTrabajo básico con claves
\nEjemplo de establecimiento y obtención de un valor:
\nconst Redis = require('ioredis');\nconst redis = new Redis();\n\nasync function basicExample() {\n await redis.set('user:1', 'Alice');\n const value = await redis.get('user:1');\n console.log(value); // Alice\n}\nbasicExample();\n\nTrabajo con hashes
\nLos hashes permiten almacenar varios campos bajo una misma clave:
\nasync function hashExample() {\n await redis.hset('user:2', 'name', 'Bob', 'age', 30);\n const name = await redis.hget('user:2', 'name');\n console.log(name); // Bob\n}\nhashExample();\n\nCanalización (Pipelining)
\nLa canalización acelera significativamente la ejecución de múltiples comandos:
\nasync function pipelineExample() {\n const pipeline = redis.pipeline();\n pipeline.set('key1', 'value1');\n pipeline.set('key2', 'value2');\n pipeline.get('key1');\n const results = await pipeline.exec();\n console.log(results); // array de resultados\n}\npipelineExample();\n\nPub/Sub (Publicador-Suscriptor)
\nEjemplo de suscripción a un canal y envío de un mensaje:
\nconst subscriber = new Redis();\nconst publisher = new Redis();\n\nsubscriber.subscribe('news', (err, count) => {\n console.log(`Suscrito a ${count} canal(es)`);\n});\n\nsubscriber.on('message', (channel, message) => {\n console.log(`Mensaje recibido del canal ${channel}: ${message}`);\n});\n\n// Publicación de un mensaje\nasync function publishMessage() {\n await publisher.publish('news', '¡Hola, mundo!');\n}\npublishMessage();\n\nTrabajo con clúster Redis
\nPara conectarse a un clúster, use Redis.Cluster:
const Redis = También en la biblioteca
Monitoreo de aplicaciones PHP con PHPMetrics
Rate Limiting en Go (Golang): bibliotecas, patrones y ejemplos de implementación
Procesamiento y análisis de Markdown en PHP: bibliotecas y ejemplos