Sobre el proyecto
Node-Redis es el cliente oficial de Redis para Node.js, instalado con `npm install redis`. El paquete general incluye soporte para módulos de Redis Stack; también se publican paquetes modulares por separado: `@redis/client` (cliente base y clúster), `@redis/bloom`, `@redis/json`, `@redis/search`, `@redis/time-series` y `@redis/entraid` para autenticación de tokens de Microsoft Entra ID.
Los clientes se crean con `createClient()` y admiten URL de conexión `redis://` y `rediss://`, parámetros discretos, sockets UNIX y TLS. `isReady` e `isOpen` exponen el estado de la conexión. El cliente es un EventEmitter que emite eventos `connect`, `ready`, `end`, `error`, `reconnecting`, `terminated`, `invalidate` y de canal fragmentado; se requiere un listener de `error` para evitar la terminación del proceso.
La API cubre todos los comandos integrados de Redis, expuestos tanto con nombres sin formato (`HSET`) como con alias en camelCase (`hSet`), con modificadores de comando pasados como objetos JavaScript y respuestas transformadas en estructuras nativas (por ejemplo, los hashes se convierten en objetos). Los datos binarios se admiten mediante `withTypeMapping`, que asigna cadenas de blob RESP a `Buffer`. Los comandos desconocidos se pueden enviar con `sendCommand()`.
Otras capacidades documentadas incluyen:
- Transacciones mediante `multi()`/`exec()` y bloqueo optimista con `watch()`.
- Pub/Sub, incluidos canales fragmentados.
- Iteradores asíncronos para `SCAN`, `HSCAN`, `SSCAN` y `ZSCAN` con opciones `MATCH`, `COUNT` y `TYPE`.
- Canalización automática de comandos emitidos en el mismo tick del bucle de eventos.
- `RedisClientPool` en v5 para grupos de conexiones aisladas, útil para comandos de bloqueo.
- Caché del lado del cliente asistida por servidor sobre RESP3 con TTL configurable, límites de entrada y desalojo LRU/FIFO.
- Guías dedicadas para implementaciones de Redis Cluster y Sentinel.
- Operaciones de comparar y establecer/eliminar (CAS/CAD) introducidas en Redis 8.4, además de un helper local `digest` XXH3 que requiere la dependencia opcional `@node-rs/xxhash`.
- Instrumentación de métricas OpenTelemetry a través de `OpenTelemetry.init()` (que requiere `@opentelemetry/api` y un SDK configurado), y telemetría publicada a través de `diagnostics_channel` de Node.js para integración con APM.
- Soporte de programabilidad para scripts y funciones Lua.
El README proporciona ejemplos de ESM y CommonJS, detalles de configuración del cliente y guías de migración de v3 a v4 y de v4 a v5. Los cambios notables de la API en v5 incluyen `close()` reemplazando a `quit()` y `destroy()` reemplazando a `disconnect()`. El repositorio tiene licencia MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.