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.