Cliente Redis para TypeScript: ioredis y redis
Redis es un almacén de datos en memoria de alto rendimiento, utilizado a menudo para almacenamiento en caché, gestión de sesiones, colas de mensajes y tiempo real. Al desarrollar en TypeScript (especialmente en el entorno Node.js), necesitarás un cliente confiable para interactuar con Redis. Hoy en día, los dos principales candidatos son las bibliotecas redis (oficial de Redis) y ioredis (una alternativa popular de terceros). Ambas admiten TypeScript de forma nativa, pero tienen diferencias en la API, el rendimiento y las funciones adicionales.
1. Biblioteca ioredis
ioredis es un cliente Redis con todas las funciones para Node.js, escrito en TypeScript. Se considera el estándar de facto en la comunidad debido a su confiabilidad, soporte para clústeres, Sentinel y capacidades integradas para trabajar con flujos de datos.
Instalación
npm install ioredis# oyarn add ioredisConexión y ejemplo básico
import Redis from 'ioredis';
const redis = new Redis({ host: 'localhost', port: 6379, // password: 'tu-contraseña', // si es necesario retryStrategy: (times) => { // estrategia de reconexión return Math.min(times * 50, 2000); }});
redis.on('connect', () => { console.log('Conectado a Redis');});
redis.on('error', (err) => { console.error('Error de Redis:', err);});
// Uso de async/awaitasync function demo() { await redis.set('user:1', JSON.stringify({ name: 'Iván', age: 30 })); const user = await redis.get('user:1'); console.log('Datos obtenidos:', JSON.parse(user));}
demo();Características de ioredis
- Soporte completo de TypeScript — todos los métodos tienen tipado estricto, lo que permite al IDE sugerir tipos de argumentos y resultados.
- Clústeres y Sentinel — soporte integrado para el modo de clúster de Redis y conmutación automática por error.
- Procesamiento de flujos — interfaz conveniente para Redis Streams (XADD, XREAD, XGROUP).
- Canales (Pub/Sub) — suscripción sencilla a canales y recepción de mensajes en tiempo real.
- Pipeline y transacciones — agrupación de comandos para mejorar el rendimiento.
- Reconexión automática — estrategia de reintentos incorporada.
Ejemplo con Pipeline
import Redis from 'ioredis';
const redis = new Redis();
async function pipelineDemo() { const pipeline = redis.pipeline(); pipeline.set('key1', 'value1'); pipeline.set('key2', 'value2'); pipeline.get('key1'); pipeline.get('key2');
const results = await pipeline.exec(); console.log('Resultados del pipeline:', results); // [ [ null, 'OK' ], [ null, 'OK' ], [ null, 'value1' ], [ null, 'value2' ] ]}
pipelineDemo();2. Biblioteca oficial redis
A partir de la versión 4.x, el cliente oficial redis fue completamente reescrito en TypeScript. Ofrece una API moderna basada en Promesas, una arquitectura modular y una integración profunda con TypeScript.
Instalación
npm install redis# oyarn add redisConexión y ejemplo
import { createClient } from 'redis';
const client = createClient({ url: 'redis://localhost:6379' // o con contraseña: 'redis://usuario:contraseña@localhost:6379'});
client.on('error', (err) => console.error('Error del Cliente Redis', err));
async function connectAndUse() { await client.connect(); console.log('¡Conectado!');
await client.set('session:123', 'active'); const status = await client.get('session:123'); console.log('Estado de la sesión:', status); // 'active'
await client.disconnect();}
connectAndUse(); También en la biblioteca
GraphQL en C# (.NET): Guía completa de la biblioteca GraphQL.NET
gomock para Go: guía completa con ejemplos prácticos
Generación de PDF en Swift (iOS/macOS): resumen de herramientas y ejemplos