·
2 commits
to master
since this release
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