Releases: redis/node-redis
[email protected]
Note: During our efforts to automate the release process, we inadvertently bumped the version from
5.1.1
to5.5.5
, skipping a few minor versions. No features or changes were actually released in those skipped versions —5.5.6
is the first release since5.1.1
with actual changes. We’re now back on track, and the automation is in place moving forward.
What's Changed
- add jsdoc comments to command parsers by @bobymicroby in #2984
- Automate release by @nkaradzhov in #2977
- fix(search): align ft.search with server by @nkaradzhov in #2988
- docs: update SchemaFieldTypes to SCHEMA_FIELD_TYPE for [email protected] by @23navi in #2992
New Contributors
Full Changelog: https://github.com/redis/node-redis/compare/[email protected]@5.5.6
[email protected]
What's Changed
- fix(handshake): ignore errors on client.setinfo by @nkaradzhov in #2969
- fix(cluster): replace native private with _ by @nkaradzhov in #2971
- fix(json): remove debug console.logs by @nkaradzhov in #2970
- Adapt legacy sentinel tests to use the new test utils by @htemelski in #2976
- docs(readme): replace relative GitHub links with absolute URLs by @aryamohanan in #2980
New Contributors
- @aryamohanan made their first contribution in #2980
Full Changelog: https://github.com/redis/node-redis/compare/[email protected]@5.1.1
[email protected]
What's Changed
- fix(client): add type annotations by @nkaradzhov in #2949
- Export CommandParser from client index file and fix doc by @orgads in #2945
- fix: fix various command import issues by @nkaradzhov in #2944
- update package-lock.json by @nkaradzhov in #2943
- fix
cluster.sUnsubscribe
- makelistener
optional by @Clsan in #2946 - Disable readOnly for cluster s/pubsub client by @htemelski in #2950
- Update Redis version to 8.0.1-pre by @bobymicroby in #2952
- revert the 'total' count logic in AGGREGATE response introduced in #2952 by @bobymicroby in #2955
- fix(client): cache subsequent clients by @nkaradzhov in #2963
- Client Side Caching by @bobymicroby in #2947
- Fix sentinel csc tests by @htemelski in #2966
- Introduce socketTimeout option by @nkaradzhov in #2965
- fix(client): bring disableClientInfo option back by @nkaradzhov in #2959
- issue/2956 - document disableClientInfo by @garyburgmann in #2957
New Contributors
- @orgads made their first contribution in #2945
- @garyburgmann made their first contribution in #2957
Full Changelog: https://github.com/redis/node-redis/compare/[email protected]@5.1.0
[email protected]
What's Changed
- doc: clarify connection pooling in createClient and fix broken link in isolationPoolOptions by @rickyssj2 in #2896
- Update CHANGELOG.md, fix typo(s) by @NicholasWilsonDEV in #2861
- fix: update package-lock.json by @nkaradzhov in #2939
- chore(examples): fix examples for v5 by @nkaradzhov in #2938
- Update packages/redis/README.md by @nkaradzhov in #2935
New Contributors
- @rickyssj2 made their first contribution in #2896
- @NicholasWilsonDEV made their first contribution in #2861
Full Changelog: https://github.com/redis/node-redis/compare/[email protected]@5.0.1
[email protected]
Redis Node.js Client Release Notes
🚀 New Features
- EntraID added support for azure identity by @bobymicroby in #2901
- Added HGETEX, HSETEX, HGETDEL hash field expiration commands by @htemelski in #2907
- feat(auth): add Entra ID identity provider integration for Redis client authentication by @bobymicroby in #2877
- RESP3 support : Node Redis v5 adds support for RESP3, the new Redis serialization protocol introduced in Redis 6.0. RESP3 offers richer data types and improved type handling compared to RESP2
- Sentinel: Redis Sentinel provides high availability for Redis through monitoring, automatic failover, and client-side support.
- Type mapping: Version five allows you configuring the type mapping. Responses can be mapped to objects, arrays, or maps. Likewise, numeric formats can be mapped to either strings or numbers.
🛠️ Improvements
- Infer the cluster pubsub client read only mode from the node type by @htemelski in #2930
- ft.create now accepts a union type for the
TYPE
field which includes the newly supported integer8 and uinteger8 types by @htemelski in #2911 - new "transform arguments" API for better key and metadata extraction by @sjpotter in #2733
- fix sentinel generics by @sjpotter in #2859
- Fix creation of cluster client again by @soccermax in #2870
- Fix cluster-slots discover race condition again by @jjsimps in #2867
- Update tests.yml by @ozennou in #2887
- Typing: Multi-commands are now correctly typed.
- API changes: Several API changes are documented in https://github.com/redis/node-redis/blob/master/docs/v4-to-v5.md
BREAKING CHANGES
- Removed graph module by @bobymicroby in #2897
- 'FT.PROFILE' now returns untyped (as-is) response by @bobymicroby in #2893
- Introduced a client-side default dialect for Redis' search and query capabilities. By default, the client now overrides the server-side dialect with version 2, automatically appending DIALECT 2 to commands like FT.AGGREGATE and FT.SEARCH.
Important: Be aware that the query dialect may impact the results returned. If needed, you can revert to a different dialect version by passing an option to the search commands. You can find further details in the query dialect documentation. by @htemelski in #2895
client.ft.search('index', '*', {DIALECT: 1})
-
Client Configuration:
keepAlive
option has been split intokeepAlive
(boolean) andkeepAliveInitialDelay
(number)- Legacy mode is now accessed via
.legacy()
method instead of{ legacyMode: true }
-
Command Options:
- New API uses "proxy client" to store options instead of passing them directly to commands
- Example:
client.withCommandOptions({ ... }).get('key')
instead ofclient.get(client.commandOptions({ ... }), 'key')
-
Connection Management:
client.QUIT/quit()
is replaced byclient.close()
client.disconnect()
has been renamed toclient.destroy()
-
Scan Iterators:
- Now yield collections of items instead of individual items
- Example:
for await (const keys of client.scanIterator()) { ... }
returns arrays of keys
-
Isolation Pool:
- Superseded by
RedisClientPool
for better separation of concerns
- Superseded by
-
Cluster Multi:
cluster.multi().addCommand()
now requiresisReadonly
parameter for replica execution support
-
Boolean to Number Types:
- Many commands now return numbers (0/1) instead of booleans for better Redis protocol alignment
- Affects: COPY, EXPIRE, EXPIREAT, HEXISTS, HSETNX, MOVE, PEXPIRE, PEXPIREAT, PFADD, RENAMENX, SETNX, etc.
-
API Changes:
- Many commands have updated parameter names and return types
- Enums replaced with constants (e.g.,
RedisFlushModes
→REDIS_FLUSH_MODES
) - Module-specific commands (JSON, Search, Time Series) have parameter restructuring
Full migration details: https://github.com/redis/node-redis/blob/master/docs/v4-to-v5.md
New Contributors
- @ozennou made their first contribution in #2887
- @bobymicroby made their first contribution in #2877
- @htemelski made their first contribution in #2895
- @spavlov6 made their first contribution in #2915
- @dhensby made their first contribution in #2920
- @nkaradzhov made their first contribution in #2929
[email protected]
🚀 New Features
- EntraID added support for azure identity by @bobymicroby in #2901
- Added HGETEX, HSETEX, HGETDEL hash field expiration commands by @htemelski in #2907
🛠️ Improvements
- ft.create now accepts a union type for the
TYPE
field which includes the newly supported integer8 and uinteger8 types by @htemelski in #2911
BREAKING CHANGES
- Removed graph module by @bobymicroby in #2897
- 'FT.PROFILE' now returns untyped (as-is) response by @bobymicroby in #2893
- Introduced a client-side default dialect for Redis' search and query capabilities. By default, the client now overrides the server-side dialect with version 2, automatically appending DIALECT 2to commands like FT.AGGREGATE and FT.SEARCH.
Important: Be aware that the query dialect may impact the results returned. If needed, you can revert to a different dialect version by passing an option to the search commands. You can find further details in the query dialect documentation. by @htemelski in #2895
client.ft.search('index', '*', {DIALECT: 1})
New Contributors
- @htemelski made their first contribution in #2895
Full Changelog: https://github.com/redis/node-redis/compare/[email protected]@5.0.0-next.7
[email protected]
🚀 New Features
- feat(auth): add Entra ID identity provider integration for Redis client authentication by @bobymicroby in #2877
🛠️ Improvements
- new "transform arguments" API for better key and metadata extraction by @sjpotter in #2733
- fix sentinel generics by @sjpotter in #2859
- Fix creation of cluster client again by @soccermax in #2870
- Fix cluster-slots discover race condition again by @jjsimps in #2867
- Update tests.yml by @ozennou in #2887
New Contributors
- @ozennou made their first contribution in #2887
- @bobymicroby made their first contribution in #2877
Full Changelog: https://github.com/redis/node-redis/compare/[email protected]@5.0.0-next.6
[email protected]
🚀 New Features
- RESP3 support: Some command responses in RESP3 aren't stable yet and, therefore, return an "untyped" ReplyUnion.
- Sentinel: You can now connect via Sentinel.
- Type mapping: Version five allows you configuring the type mapping. Responses can be mapped to objects, arrays, or maps. Likewise, numeric formats can be mapped to either strings or numbers.
🛠️ Improvements
- Typing: Multi-commands are now correctly typed.
- API changes: Several API changes are documented in https://github.com/redis/node-redis/blob/master/docs/v4-to-v5.md .
Further details
You can find further details here: