Sobre o projeto
Node-Redis é o cliente Redis oficial para Node.js, instalado com `npm install redis`. O pacote abrangente agrupa suporte aos módulos Redis Stack; pacotes modulares também são publicados separadamente: `@redis/client` (cliente base e cluster), `@redis/bloom`, `@redis/json`, `@redis/search`, `@redis/time-series` e `@redis/entraid` para autenticação de token Microsoft Entra ID.
Os clientes são criados com `createClient()` e suportam URLs de conexão `redis://` e `rediss://`, parâmetros discretos, sockets UNIX e TLS. `isReady` e `isOpen` expõem o estado da conexão. O cliente é um EventEmitter que emite eventos `connect`, `ready`, `end`, `error`, `reconnecting`, `terminated`, `invalidate` e de canal fragmentado; um listener de `error` é necessário para evitar o encerramento do processo.
A API cobre todos os comandos Redis integrados, expostos tanto como nomes brutos (`HSET`) quanto como aliases camelCase (`hSet`), com modificadores de comando passados como objetos JavaScript e respostas transformadas em estruturas nativas (por exemplo, hashes tornam-se objetos). Dados binários são suportados através de `withTypeMapping` mapeando strings blob RESP para `Buffer`. Comandos desconhecidos podem ser enviados com `sendCommand()`.
Outras capacidades documentadas incluem:
- Transações via `multi()`/`exec()` e bloqueio otimista com `watch()`.
- Pub/Sub, incluindo canais fragmentados.
- Iteradores assíncronos para `SCAN`, `HSCAN`, `SSCAN` e `ZSCAN` com opções `MATCH`, `COUNT` e `TYPE`.
- Pipelining automático de comandos emitidos no mesmo tick do loop de eventos.
- `RedisClientPool` no v5 para pools de conexões isoladas, útil para comandos de bloqueio.
- Cache do lado do cliente assistido por servidor sobre RESP3 com TTL configurável, limites de entrada e evicção LRU/FIFO.
- Guias dedicados para implantações Redis Cluster e Sentinel.
- Operações compare-and-set/delete (CAS/CAD) introduzidas no Redis 8.4, além de um auxiliar local `digest` XXH3 que requer a dependência opcional `@node-rs/xxhash`.
- Instrumentação de métricas OpenTelemetry através de `OpenTelemetry.init()` (exigindo `@opentelemetry/api` e um SDK configurado), e telemetria publicada através de `diagnostics_channel` do Node.js para integração APM.
- Suporte a programabilidade para scripts e funções Lua.
O README fornece exemplos ESM e CommonJS, detalhes de configuração do cliente e guias de migração do v3 para v4 e do v4 para v5. Mudanças notáveis na API v5 incluem `close()` substituindo `quit()` e `destroy()` substituindo `disconnect()`. O repositório é licenciado sob MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.