Cliente Redis para JavaScript (Node.js) — ioredis
\n\nRedis é um armazenamento de dados do tipo chave-valor de alto desempenho, frequentemente usado para cache, gerenciamento de sessões, filas de mensagens e sistemas Pub/Sub. Para trabalhar com Redis a partir do Node.js, existem várias bibliotecas, mas uma das mais poderosas e populares é o ioredis. Esta biblioteca é projetada para aplicações modernas que exigem alta performance, suporte a clusterização, transações e processamento de fluxo de dados.
\n\nO que é ioredis?
\nioredis é um cliente Redis completo para Node.js, escrito em JavaScript. Ele suporta todos os recursos do Redis, incluindo clusterização, modos Sentinel, pipelining, transações (MULTI/EXEC), scripts Lua, Pub/Sub, bem como trabalho com estruturas semelhantes ao MapReduce. A biblioteca é ativamente desenvolvida e usada em produção por muitas empresas.
\n\nInstalação do ioredis
\nA instalação é feita via npm:
\nnpm install ioredis\nApós a instalação, você pode conectar-se ao servidor Redis:
\nconst Redis = require('ioredis');\nconst redis = new Redis(); // padrão localhost:6379\n\nPrincipais recursos do ioredis
\n- \n
- Facilidade de uso — API intuitiva, semelhante aos comandos do Redis. \n
- Suporte a Promise e async/await — todas as operações assíncronas retornam promessas. \n
- Clusterização — distribuição automática de requisições entre os nós do cluster. \n
- Sentinel — comutação automática para o servidor de backup em caso de falha. \n
- Pipelining — envio de vários comandos em uma única requisição para melhorar o desempenho. \n
- Pub/Sub — inscrição em canais e troca de mensagens em tempo real. \n
- Suporte a scripts Lua — execução de operações atômicas no lado do servidor. \n
- Monitoramento e eventos — rastreamento do estado da conexão e erros. \n
Exemplos de uso do ioredis
\n\nTrabalho básico com chaves
\nExemplo de definição e obtenção de 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\nTrabalho com hashes
\nHashes permitem armazenar vários campos sob uma única chave:
\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\nPipelining
\nO pipelining acelera significativamente a execução de múltiplos 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-Assinante)
\nExemplo de inscrição em um canal e envio de mensagem:
\nconst subscriber = new Redis();\nconst publisher = new Redis();\n\nsubscriber.subscribe('news', (err, count) => {\n console.log(`Inscrito em ${count} canal(ais)`);\n});\n\nsubscriber.on('message', (channel, message) => {\n console.log(`Mensagem recebida do canal ${channel}: ${message}`);\n});\n\n// Publicação de mensagem\nasync function publishMessage() {\n await publisher.publish('news', 'Olá, mundo!');\n}\npublishMessage();\n\nTrabalho com cluster Redis
\nPara conectar-se a um cluster, use Redis.Cluster:
const Redis = Também na biblioteca
Configuração de aplicações em C++: bibliotecas e ferramentas para configuração flexível
csv para Rust: guia completo com exemplos práticos
Container de Injeção de Dependência para JavaScript (Node.js) — Awilix
Geração de PDF em Kotlin: visão geral de bibliotecas e ferramentas