Cliente Redis para TypeScript: ioredis e redis
Redis é um armazenamento de dados em memória de alto desempenho, frequentemente usado para cache, gerenciamento de sessões, filas de mensagens e tempo real. Ao desenvolver em TypeScript (especialmente no ambiente Node.js), você precisará de um cliente confiável para interagir com o Redis. Atualmente, os dois principais candidatos são as bibliotecas redis (oficial da Redis) e ioredis (uma alternativa popular de terceiros). Ambas suportam TypeScript nativamente, mas possuem diferenças na API, desempenho e funcionalidades adicionais.
1. Biblioteca ioredis
ioredis é um cliente Redis completo para Node.js, escrito em TypeScript. É considerado o padrão de facto na comunidade devido à sua confiabilidade, suporte a clusters, Sentinel e recursos integrados para trabalhar com fluxos de dados.
Instalação
npm install ioredis# ouyarn add ioredisConexão e exemplo básico
import Redis from 'ioredis';
const redis = new Redis({ host: 'localhost', port: 6379, // password: 'sua-senha', // se necessário retryStrategy: (times) => { // estratégia de reconexão return Math.min(times * 50, 2000); }});
redis.on('connect', () => { console.log('Conectado ao Redis');});
redis.on('error', (err) => { console.error('Erro no Redis:', err);});
// Usando async/awaitasync function demo() { await redis.set('user:1', JSON.stringify({ name: 'João', age: 30 })); const user = await redis.get('user:1'); console.log('Dados obtidos:', JSON.parse(user));}
demo();Características do ioredis
- Suporte total a TypeScript — todos os métodos possuem tipagem estrita, permitindo que a IDE sugira tipos de argumentos e resultados.
- Clusters e Sentinel — suporte integrado para modo cluster do Redis e failover automático.
- Processamento de streams — interface conveniente para Redis Streams (XADD, XREAD, XGROUP).
- Canais (Pub/Sub) — inscrição simples em canais e recebimento de mensagens em tempo real.
- Pipeline e transações — agrupamento de comandos para melhorar o desempenho.
- Reconexão automática — estratégia de repetição integrada.
Exemplo com 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 do pipeline:', results); // [ [ null, 'OK' ], [ null, 'OK' ], [ null, 'value1' ], [ null, 'value2' ] ]}
pipelineDemo();2. Biblioteca oficial redis
A partir da versão 4.x, o cliente oficial redis foi completamente reescrito em TypeScript. Ele oferece uma API moderna baseada em Promise, arquitetura modular e integração profunda com TypeScript.
Instalação
npm install redis# ouyarn add redisConexão e exemplo
import { createClient } from 'redis';
const client = createClient({ url: 'redis://localhost:6379' // ou com senha: 'redis://usuario:senha@localhost:6379'});
client.on('error', (err) => console.error('Erro no 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('Status da sessão:', status); // 'active'
await client.disconnect();}
connectAndUse(); Também na biblioteca
Trabalhando com S3 e armazenamentos em nuvem em Node.js: biblioteca @aws-sdk/client-s3
Geração de PDF em PHP: melhores bibliotecas e exemplos de código