# What changed in redis

> 129 changes in redis 5 to 6 from its official release notes, upgrade guides and advisories: 5 breaking, 67 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/npm/redis/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## redis 6

### Breaking changes

- Yields values instead of field names. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Table-recognized raw commands now follow their routing policy; target a specific node with `cluster.nodeClient(node).sendCommand(...)` for per-node operations. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Rejects instead of hanging when the resolved master is unreachable. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Node.js 20 is now the minimum supported runtime. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- RESP3 is now the default protocol; opt into RESP2 explicitly if you need the old wire format. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)

### New APIs and options

- Adds MaxCommandRedirectionsError for cluster redirections. (6.2.1) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.1)
- Adds the BLMOVEM command. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds the COLLECT reducer to FT.AGGREGATE. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds support for the COMMAND DOCS command. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds an experimental FieldsetRegistry API for the HIMPORT managed fieldset lifecycle. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds support for FT.ALIASLIST. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds an experimental command family with managed fieldset lifecycle; its surface is unstable and should not be used in production. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds reviver support to ARRPOP. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds reviver support to GET. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds reviver support to MGET. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds the LMOVEM command. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds an experimental PreparedFieldsets API for the HIMPORT managed fieldset lifecycle. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds the missing RediSearch stemmer languages. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds the RERANK parameter for HNSW vector fields. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds the SDIFFCARD set-cardinality command. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds the SUNIONCARD set-cardinality command. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds EXCLUDEEMPTY support to TS.MRANGE. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds EXCLUDEEMPTY support to TS.MREVRANGE. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds the multi-key pivot command TS.NRANGE, including support for multiple aggregators per key. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds the multi-key pivot command TS.NREVRANGE, including support for multiple aggregators per key. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds TS.QUERYLABELS with LABELS and VALUES forms. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds the cursor-read command TS.READ. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- XREAD gains the MAXCOUNT option. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- XREAD gains the MAXSIZE option. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds zRevRankWithScore support for ZREVRANK WITHSCORE. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Adds a cluster method for getting the node client for a key, for use with WATCH/MULTI/EXEC. (6.1.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.1.0)
- Key prefixing is now available for Redis keys. (6.1.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.1.0)
- Adds a scan iterator for Sentinel. (6.0.1) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.1)
- Adds support for the CLIENT UNBLOCK command. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- Adds a duplicate() method to RedisSentinel. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- FT.AGGREGATE now allows LOAD *. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- Adds support for the INCREX command. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- Adds support for the INCREXBYFLOAT command. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- Adds the FPHA option to JSON.SET. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- Stack modules are now exposed on the pool type. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- Adds support for Redis 8.8 array commands. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- Adds multi-aggregation range APIs for time-series. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- Adds the XNACK command and its options. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- Adds the COUNT aggregator to ZINTER. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- Adds the COUNT aggregator to ZINTERSTORE. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- Adds the COUNT aggregator to ZUNION. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- Adds the COUNT aggregator to ZUNIONSTORE. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)

### Behavior and default changes

- Cluster commands now use routing policies from server COMMAND metadata, including multi-key splitting, fan-out aggregation, and cluster-aware special routing. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Exposes timeout warnings on the FT.SEARCH command family. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Client connection errors are now recorded by OpenTelemetry. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- The default value for commandTimeout is now 5 seconds. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- The default value for keepAliveInitialDelay is now 30 seconds. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- parseURL now parses unix:// URLs. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- Pool classes are now publicly re-exported. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- RedisClient is now publicly re-exported. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- RedisCluster is now publicly re-exported. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- RedisSentinel is now publicly re-exported. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)

### Fixes and other changes

- Handles MOVED and ASK redirects for atomic MULTI commands in clusters. (6.2.1) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.1)
- Keeps batch commands routed by slot while a cluster migration is in progress. (6.2.1) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.1)
- Caps Sentinel rediscovery retries after connecting, limiting repeated retries. (6.2.1) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.1)
- Decodes RESP3 doubles to the value sent by the server. (6.2.1) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.1)
- Abort and timeout listeners are rebound when a command moves to another queue. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Commands are rejected before cluster topology is ready. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- The in-flight connect attempt is rejected if the socket dies during the initiator. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Emits the DB argument when its value is 0. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Drains the write queue when extracting all commands. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Preserves zero scores. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Encodes Date values for PXAT in milliseconds. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Emits SAMPLES when its value is 0. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- The pool timeout error message now includes the acquire-timeout duration. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Emits FREQ when its value is 0. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Emits IDLETIME when its value is 0. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Emits LIMIT when its value is 0. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Emits ENTRIESREAD when its value is 0. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Emits ENTRIESREAD when its value is 0. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Emits ENTRIESADDED when its value is 0. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Emits LIMIT when its value is 0. (6.2.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.2.0)
- Aligns the RESP default in RedisClientOptions with RedisClientType. (6.0.1) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.1)
- Preserves seed nodes in sentinelRootNodes after a topology update. (6.0.1) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.1)
- The entraid package upgrades @azure/msal-node to 5.x to drop a vulnerable transitive uuid dependency. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- Sharded pubsub topology is recovered after a cluster node reconnects. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- Sentinel pubsub connections use the mapped address when failover moves them. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- Fixes handling of wrapper command options. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)
- The client now swallows synchronous EPIPE errors from writeAfterFIN. (6.0.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%406.0.0)

## redis 5

### New APIs and options

- Adds low-overhead event streams for tracking runtime behavior, including commands, batches, connections, Pub/Sub, cache, and pool wait timing. (5.12.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.12.0)
- Adds OpenTelemetry metrics instrumentation; initialize OpenTelemetry before creating clients to connect telemetry to an existing OTel SDK/exporter pipeline. (5.12.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.12.0)
- Exposes sendCommand on multi for all clients. (5.12.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.12.0)
- Adds sSubscribe and sUnsubscribe methods to the Sentinel client. (5.12.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.12.0)
- Adds a local digest helper for CAS/CAD operations. (5.11.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.11.0)
- Adds the HOTKEYS command family to track and identify hot keys by CPU time and network bytes. (5.11.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.11.0)
- Adds NaN support to the time-series client. (5.11.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.11.0)
- Adds nodeAddressMap support for Sentinel. (5.11.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.11.0)
- Adds the socket.servname property to createClient configuration. (5.11.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.11.0)
- Adds new time-series aggregation types. (5.11.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.11.0)
- Adds client support for the VRANGE command for vector sets. (5.11.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.11.0)
- Adds idempotency options to prevent duplicate entries by tracking producer and message IDs. (5.11.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.11.0)
- Adds a command to configure per-stream idempotency parameters. (5.11.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.11.0)
- Adds idempotency tracking fields to the stream information response. (5.11.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.11.0)
- Adds experimental support for the CAD command. (5.10.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.10.0)
- Adds experimental support for the CAS command. (5.10.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.10.0)
- Adds experimental support for the DELEX command. (5.10.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.10.0)
- Adds experimental support for the DIGEST command. (5.10.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.10.0)
- Adds experimental support for HYBRID search. (5.10.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.10.0)
- Adds an experimental latency histogram. (5.10.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.10.0)
- Adds support for the MSETEX command. (5.10.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.10.0)
- Adds support for the CLAIM attribute on XREADGROUP. (5.10.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.10.0)
- Adds cluster and node events. (5.9.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.9.0)
- Adds support for hitless upgrades. (5.9.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.9.0)
- Multi-commands support typed and untyped modes. (5.9.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.9.0)

### Behavior and default changes

- The client handles SMIGRATING and SMIGRATED push notifications by relaxing timeouts during migration and handing off slots when migration completes. (5.11.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.11.0)
- Allows indexing the same field multiple times with different configurations. (5.11.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.11.0)
- Adds default modules to client pools. (5.9.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.9.0)
- The client emits invalidate events. (5.9.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.9.0)
- Extends proxy behavior. (5.9.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.9.0)

### Fixes and other changes

- Corrects the placement of INDEXMISSING. (5.12.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.12.0)
- Preserves root seeds for outage recovery in Sentinel. (5.12.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.12.0)
- Cluster functions now return Promise consistently. (5.11.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.11.0)
- Improves the FT.HYBRID command implementation. (5.11.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.11.0)
- Constructors are unwrapped to primitives in type mapping. (5.11.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.11.0)
- Supports IPv6 literals in URLs. (5.11.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.11.0)
- Prevents a false-ready state when socket errors occur during the handshake. (5.10.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.10.0)
- Stops parsing number properties in XREADGROUP. (5.10.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.10.0)
- Fixes corruption of multi-byte characters when converting Buffers to strings. (5.9.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.9.0)
- Fixes the client kill enums. (5.9.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.9.0)
- Prevents an infinite loop in cluster behavior. (5.9.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.9.0)
- The cluster type now uses all commands. (5.9.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.9.0)
- The pool now uses the options provided when it is created. (5.9.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.9.0)
- The command now returns its count as a number. (5.9.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.9.0)
- Shard subscriptions now properly resubscribe after failover. (5.9.0) — [release notes](https://github.com/redis/node-redis/releases/tag/redis%405.9.0)
