sendCommand on multi for all clients by @nkaradzhov in https://github.com/redis/node-redis/pull/3181sSubscribe/sUnsubscribe methods to Sentinel client by @nkaradzhov in https://github.com/redis/node-redis/pull/3178INDEXMISSING placement by @nkaradzhov in https://github.com/redis/node-redis/pull/3179@redis/client dist imports in CREATE command by @PavelPashov in https://github.com/redis/node-redis/pull/3187transformDoubleReply by @rhymincymon in https://github.com/redis/node-redis/pull/3213Node Redis now ships with first-class observability via OpenTelemetry metrics and Node.js diagnostics_channel. Initialize OpenTelemetry before creating clients (OpenTelemetry.init({ metrics: { enabled: true } })) and you can plug Redis client telemetry into your existing OTel SDK/exporter pipeline.
This enables visibility into command latency, connection lifecycle, resiliency/errors, Pub/Sub traffic, streaming behavior, and client-side caching activity. On top of metrics, diagnostics channels provide a more abstract, higher-level way to track runtime behavior through low-overhead event streams (commands, batches, connection events, maintenance notifications, pub/sub, cache, and pool wait timing), so APM tools or custom subscribers can observe the system without changing application code.
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.11.0...redis@5.12.0
This release introduces support for Redis Enterprise Cluster maintenance notifications via SMIGRATING/SMIGRATED push notifications. The client now automatically handles slot migrations by:
This release adds support for Redis 8.6 features:
IDMPAUTO, IDMP, and policy) - Prevent duplicate entries by tracking producer and message IDsIDMP_DURATION, IDMP_MAXSIZE)idmp-duration, idmp-maxsize, pids-tracked, iids-tracked, iids-added, iids-duplicates)START, STOP, GET, RESET) - Track and identify hot keys by CPU time and network bytesFull Changelog: https://github.com/redis/node-redis/compare/redis@5.10.0...redis@5.11.0
We'd like to thank all the contributors who worked on this release!
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.9.0...redis@5.10.0
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.8.3...redis@5.9.0
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.9.0-beta.2...redis@5.9.0-beta.3
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.8.2...redis@5.8.3
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.9.0-beta.1...redis@5.9.0-beta.2
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.9.0-beta.0...redis@5.9.0-beta.1
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.8.2...redis@5.9.0-beta.0
ErrorReply stack by @dxg in https://github.com/redis/node-redis/pull/3050Full Changelog: https://github.com/redis/node-redis/compare/redis@5.8.1...redis@5.8.2
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.8.0...redis@5.8.1
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.7.0...redis@5.8.0
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.6.1...redis@5.7.0
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.6.0...redis@5.6.1
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.5.6...redis@5.6.0
Note: During our efforts to automate the release process, we inadvertently bumped the version from
5.1.1to5.5.5, skipping a few minor versions. No features or changes were actually released in those skipped versions —5.5.6is the first release since5.1.1with actual changes. We’re now back on track, and the automation is in place moving forward.
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.1.1...redis@5.5.6
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.1.0...redis@5.1.1
cluster.sUnsubscribe - make listener optional by @Clsan in https://github.com/redis/node-redis/pull/2946Full Changelog: https://github.com/redis/node-redis/compare/redis@5.0.1...redis@5.1.0
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.0.0...redis@5.0.1
TYPE field which includes the newly supported integer8 and uinteger8 types by @htemelski in https://github.com/redis/node-redis/pull/2911client.ft.search('index', '*', {DIALECT: 1})
Client Configuration:
keepAlive option has been split into keepAlive (boolean) and keepAliveInitialDelay (number).legacy() method instead of { legacyMode: true }Command Options:
client.withCommandOptions({ ... }).get('key') instead of client.get(client.commandOptions({ ... }), 'key')Connection Management:
client.QUIT/quit() is replaced by client.close()client.disconnect() has been renamed to client.destroy()Scan Iterators:
for await (const keys of client.scanIterator()) { ... } returns arrays of keysIsolation Pool:
RedisClientPool for better separation of concernsCluster Multi:
cluster.multi().addCommand() now requires isReadonly parameter for replica execution supportBoolean to Number Types:
API Changes:
RedisFlushModes → REDIS_FLUSH_MODES)Full migration details: https://github.com/redis/node-redis/blob/master/docs/v4-to-v5.md