Releases: redis/node-redis
redis@5.12.0
✨ What's Changed
🚀 Features
- feat: expose
sendCommandonmultifor all clients by @nkaradzhov in #3181 - feat(sentinel): add
sSubscribe/sUnsubscribemethods to Sentinel client by @nkaradzhov in #3178
🐛 Fixes
- fix(search): correct
INDEXMISSINGplacement by @nkaradzhov in #3179 - Pool fixes by @nkaradzhov in #3182
- fix(search): use
@redis/clientdist imports inCREATEcommand by @PavelPashov in #3187 - fix(sentinel): preserve root seeds for outage recovery by @nkaradzhov in #3188
- fix: fallthrough bug in
transformDoubleReplyby @rhymincymon in #3213
🔭 Observability (OTEL + Diagnostics)
Node 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.
- add OpenTelemetry metrics instrumentation by @PavelPashov in #3110
- feat: implement diagnostic channels for observability by @logaretm in #3195
🧪 Tests & CI
- test(scho oss): add smigrating checks for new connections by @nkaradzhov in #3186
- Add self-report metrics step to CI workflow by @bobymicroby in #3199
- Add run tests action by @dariaguy in #3221
📚 Docs
- improve sentinel docs by @cutiepoka in #3189
- docs: clarify DUMP/RESTORE binary payload usage by @nkaradzhov in #3201
- fix(docs): configure typedoc entry points for monorepo by @nkaradzhov in #3220
🙌 New Contributors
- @cutiepoka made their first contribution in #3189
- @rhymincymon made their first contribution in #3213
- @logaretm made their first contribution in #3195
- @dariaguy made their first contribution in #3221
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.11.0...redis@5.12.0
redis@5.11.0
5.11.0 Release Changelog
🌟 Highlights
Smart Client Handoffs for Enterprise OSS API (Pending a Redis Enterprise version release)
This release introduces support for Redis Enterprise Cluster maintenance notifications via SMIGRATING/SMIGRATED push notifications. The client now automatically handles slot migrations by:
- Relaxing timeouts during migration (SMIGRATING) to prevent false failures
- Automatic slot handoff when completed (SMIGRATED)
- Enabling seamless operations during Redis Enterprise maintenance windows
Redis 8.6 Support
This release adds support for Redis 8.6 features:
- XADD idempotency options (
IDMPAUTO,IDMP, andpolicy) - Prevent duplicate entries by tracking producer and message IDs - XCFGSET command - Configure per-stream idempotency parameters (
IDMP_DURATION,IDMP_MAXSIZE) - XINFO STREAM enhancements - New idempotency tracking fields (
idmp-duration,idmp-maxsize,pids-tracked,iids-tracked,iids-added,iids-duplicates) - HOTKEYS command family (
START,STOP,GET,RESET) - Track and identify hot keys by CPU time and network bytes
🚀 New Features
- feat(cluster): smart client handoffs OSS (hitless upgrades) by @nkaradzhov in #3142
- feat(client): add VRANGE command for vector sets by @nkaradzhov in #3158
- feat(client): add HOTKEYS command for hotkey tracking by @nkaradzhov in #3164
- feat(client): add XCFGSET command for stream idempotency configuration by @nkaradzhov in #3163
- feat(client): add XADD idempotency options (IDMPAUTO, IDMP) and policy by @nkaradzhov in #3161
- feat(client): add idempotency fields to XINFO STREAM response by @nkaradzhov in #3162
- feat(time-series): add NaN support and new aggregation types by @PavelPashov in #3167
- feat(client): add local digest helper for CAS/CAD operations by @PavelPashov in #3154
- feat(search): support indexing same field multiple times with different configurations by @nkaradzhov in #3157
- feat(sentinel): implement nodeAddressMap for sentinel by @elimelt in #3145
- feat(test-utils): add testAllAuto method for automatic cluster test generation by @bobymicroby in #3148
- Add socket.servname property to createClient configuration by @itrich in #3165
🐛 Bug Fixes
- fix(client): Support IPv6 literals in URL by @TimWolla in #3176
- fix(client): return Promise consistently in cluster functions by @orgads in #3159
- fix(search): improve FT.HYBRID command implementation by @PavelPashov in #3171
- fix(pool): cannot read private member by @Eomm in #3151
- fix: unwrap constructors to primitives in type mapping by @watersRand in #3174
📚 Documentation & Testing
- docs: correct CAS/CAD parameter name and update example by @PavelPashov in #3156
- docs(token-manager): Correct documentation for jitterPercentage by @dubek in #3153
- tests: fix flaky timeout assertion in maintenance notification test by @kiryazovi-redis in #3143
- tests: add TLS connection tests by @PavelPashov in #3166
- tests: add mocha multi-reporters and junit reporter support by @bobymicroby in #3138
- refactor(test-utils): use separate redis-tag and redis-version CLI arguments by @nkaradzhov in #3169
- Hotkeys Adjustments by @nkaradzhov in #3173
New Contributors
- @kiryazovi-redis made their first contribution in #3143
- @elimelt made their first contribution in #3145
- @dubek made their first contribution in #3153
- @itrich made their first contribution in #3165
- @TimWolla made their first contribution in #3176
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.10.0...redis@5.11.0
redis@5.10.0
Changes
🚀 New Features
- Add MSETEX command support (#3116)
- Add CLAIM attribute to XREADGROUP command (#3122)
- Add index/query doc page examples (#3109)
🧪 Experimental Features
- Add support for CAS/CAD, DELEX, DIGEST commands (#3123)
- Add support for HYBRID search (#3119 #3132)
- Add latency histogram (#3099)
🐛 Bug Fixes
- Fix dist/package.json version bumping in release process (#3125)
- Prevent false-ready state when socket errors during handshake (#3128)
- Don't parse number properties in XREADGROUP (#3133)
🧰 Maintenance
- Apply proxy improvements (#3121)
- Mark 8.4 features as experimental (#3134)
- Extract supported Redis versions into SUPPORTED_REDIS_VERSIONS.md (#3131)
- Bump test container image to 8.4.0 (#3139)
Contributors
We'd like to thank all the contributors who worked on this release!
- @andy-stark-redis
- @htemelski-redis
- @nkaradzhov
- @NaughtySora
- @PavelPashov
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.9.0...redis@5.10.0
redis@5.9.0
What's Changed
- fix(ts): use all commands in cluster type by @nkaradzhov in #3065
- Main by @watersRand in #3047
- docs: fix scanIterator example in readme by @nkaradzhov in #3072
- Hitless upgrades by @nkaradzhov in #3021
- fix(cluster): prevent infinite loop by @nkaradzhov in #3078
- docs: update RedisJSON documentation link by @Caiuriuller in #3079
- refactor(test): improve test scenario reliability and maintainability by @PavelPashov in #3077
- Improve stale issue management workflow by @elena-kolevska in #3082
- Maint fixes by @nkaradzhov in #3086
- feat: add default modules to createClientPool by @killagu in #3088
- DOC-5743 BITOP examples by @andy-stark-redis in #3087
- feat: add typed/untyped mode support for multi-commands by @PavelPashov in #3084
- Fix: resolve doubly linked list push issue by @ntvviktor in #3085
- Update default Redis version to 8.4-M01-pre in tests by @bobymicroby in #3092
- Adjust scenario tests according to latest maint naming changes by @nkaradzhov in #3090
- test(maint): touch up wrong assertions by @nkaradzhov in #3096
- fix(pool): make createClientPool use provided options by @nkaradzhov in #3095
- Emit invalidate events from client by @sastcsgh in #3076
- Fix client kill enums by @watersRand in #3074
- cluster/node events (#1855) by @NaughtySora in #3083
- fix(ssubscribe): properly resubscribe in case of shard failover by @nkaradzhov in #3098
- fix: multi-byte character corruption when converting Buffers to strings by @brb3 in #3100
- fix(cmd): PUBSUB_NUMSUB return count as number by @nkaradzhov in #3103
- Extend proxy by @nkaradzhov in #3105
New Contributors
- @watersRand made their first contribution in #3047
- @Caiuriuller made their first contribution in #3079
- @elena-kolevska made their first contribution in #3082
- @killagu made their first contribution in #3088
- @ntvviktor made their first contribution in #3085
- @sastcsgh made their first contribution in #3076
- @NaughtySora made their first contribution in #3083
- @brb3 made their first contribution in #3100
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.8.3...redis@5.9.0
redis@5.9.0-beta.3
What's Changed
- Fix: resolve doubly linked list push issue by @ntvviktor in #3085
- Update default Redis version to 8.4-M01-pre in tests by @bobymicroby in #3092
- Adjust scenario tests according to latest maint naming changes by @nkaradzhov in #3090
- test(maint): touch up wrong assertions by @nkaradzhov in #3096
- fix(pool): make createClientPool use provided options by @nkaradzhov in #3095
- Emit invalidate events from client by @sastcsgh in #3076
- Fix client kill enums by @watersRand in #3074
- cluster/node events (#1855) by @NaughtySora in #3083
- fix(ssubscribe): properly resubscribe in case of shard failover by @nkaradzhov in #3098
- fix: multi-byte character corruption when converting Buffers to strings by @brb3 in #3100
- fix(cmd): PUBSUB_NUMSUB return count as number by @nkaradzhov in #3103
- Extend proxy by @nkaradzhov in #3105
New Contributors
- @ntvviktor made their first contribution in #3085
- @sastcsgh made their first contribution in #3076
- @NaughtySora made their first contribution in #3083
- @brb3 made their first contribution in #3100
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.9.0-beta.2...redis@5.9.0-beta.3
redis@5.8.3
What's Changed
- fix: add typed/untyped mode support for multi-commands by @PavelPashov in #3084
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.8.2...redis@5.8.3
redis@5.9.0-beta.2
What's Changed
- feat: add default modules to createClientPool by @killagu in #3088
- DOC-5743 BITOP examples by @andy-stark-redis in #3087
- feat: add typed/untyped mode support for multi-commands by @PavelPashov in #3084
New Contributors
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.9.0-beta.1...redis@5.9.0-beta.2
redis@5.9.0-beta.1
What's Changed
- fix(cluster): prevent infinite loop by @nkaradzhov in #3078
- docs: update RedisJSON documentation link by @Caiuriuller in #3079
- refactor(test): improve test scenario reliability and maintainability by @PavelPashov in #3077
- Improve stale issue management workflow by @elena-kolevska in #3082
- Maint fixes by @nkaradzhov in #3086
New Contributors
- @Caiuriuller made their first contribution in #3079
- @elena-kolevska made their first contribution in #3082
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.9.0-beta.0...redis@5.9.0-beta.1
redis@5.9.0-beta.0
What's Changed
- fix(ts): use all commands in cluster type by @nkaradzhov in #3065
- Main by @watersRand in #3047
- docs: fix scanIterator example in readme by @nkaradzhov in #3072
- Hitless upgrades by @nkaradzhov in #3021
New Contributors
- @watersRand made their first contribution in #3047
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.8.2...redis@5.9.0-beta.0
redis@5.8.2
What's Changed
- Clustering sendCommand docs by @nfriedly in #3053
- Stop erasing
ErrorReplystack by @dxg in #3050 - Call out sendCommand cluster difference in readme by @nfriedly in #3054
- fix(ts): xtrim threshold accepts string by @Eomm in #3058
- chore(tests): bump test container version 8.2.1-pre by @nkaradzhov in #3057
- fix(sentinel): properly pass reconnectStrategy by @nkaradzhov in #3063
- fix(search): properly decide if response has docs by @nkaradzhov in #3060
New Contributors
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.8.1...redis@5.8.2