NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #2727 most downloaded on npm
A modern, high performance Redis client
Last release 4 days ago
30 Sep 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 55 of the last 60 stable releases
3 versions withdrawn
withdrawn after publishing
16 years old
188 releases · first in 2010
Nothing published for this version
fix(sentinel): cap post-connect rediscovery retries by @DebadityaHait in #3388
Full Changelog: https://github.com/redis/node-redis/compare/redis@6.2.0...redis@6.2.1
One column per quarter.
Cluster commands now follow the server's request/response policies. node-redis reads each command's routing policy from the server's COMMAND metadata
Cluster commands now follow the server's request/response policies. node-redis reads each command's routing policy from the server's COMMAND metadata and routes and aggregates accordingly, so the cluster client behaves much more like a single server. Multi-key commands that span hash slots — MGET, MSET, DEL, EXISTS, TOUCH, UNLINK — are transparently split per slot and their replies reassembled in caller order, so cross-slot calls that previously failed with CROSSSLOT now just work. Fan-out commands such as KEYS, DBSIZE, FLUSHALL, PING, WAIT, SCRIPT EXISTS and CONFIG SET run across every shard (or every node) and their replies are aggregated per the server's policy, SCAN walks the whole cluster behind a per-client virtual cursor, and RANDOMKEY / FT.CURSOR get correct cluster-aware routing. Replica read-scaling was also aligned with the server flags, so read-only keyless commands (DBSIZE, KEYS, SCAN, RANDOMKEY, and the RediSearch / time-series reads) can be served from replicas again.
⚠️ Behavior change for the raw sendCommand path: a table-recognized command sent raw — e.g. cluster.sendCommand(['DBSIZE']) — now follows its policy (fan-out and aggregate) instead of hitting a single node. Callers who relied on raw commands for per-node operations should target a specific node with cluster.nodeClient(node).sendCommand(...).
This release also brings a broad wave of new command coverage across the client and modules. The time-series package gains the most: new TS.NRANGE/TS.NREVRANGE multi-key pivot commands, a TS.READ cursor reader, TS.QUERYLABELS, EXCLUDEEMPTY on MRANGE/MREVRANGE, and multi-aggregator support. RediSearch adds FT.ALIASLIST, a COLLECT reducer for FT.AGGREGATE, HNSW RERANK, timeout warnings on the FT.SEARCH family, and the full set of stemmer languages. The core client adds SUNIONCARD/SDIFFCARD, LMOVEM/BLMOVEM, ZREVRANK WITHSCORE, COMMAND DOCS, and XREAD MAXCOUNT/MAXSIZE. A large batch of correctness fixes lands for zero-valued optional arguments (LIMIT 0, DB 0, SAMPLES 0, ENTRIESREAD 0, IDLETIME/FREQ 0, ENTRIESADDED 0) that were previously dropped from the wire, alongside several cluster and sentinel connection-lifecycle fixes.
The new HIMPORT command family (managed fieldset lifecycle) ships as experimental — see the warning below.
COMMAND DOCS support (#3362) — @Hashim1999164LMOVEM and BLMOVEM commands (#3340) — @nkaradzhovSUNIONCARD and SDIFFCARD set-cardinality commands (#3336) — @nkaradzhovzRevRankWithScore (#3279) — @raashish1601MAXCOUNT / MAXSIZE options (#3335) — @nkaradzhovFT.SEARCH family (#3338) — @nkaradzhovFT.ALIASLIST (#3351) — @nkaradzhovRERANK parameter for HNSW vector fields (#3356) — @nkaradzhovCOLLECT reducer to FT.AGGREGATE (#3310) — @nkaradzhovTS.NRANGE / TS.NREVRANGE multi-key pivot commands (#3337) — @nkaradzhovTS.NRANGE / TS.NREVRANGE (#3360) — @nkaradzhovTS.QUERYLABELS (LABELS and VALUES forms) (#3354) — @nkaradzhovEXCLUDEEMPTY to TS.MRANGE / TS.MREVRANGE (#3352) — @nkaradzhovTS.READ cursor-read command (#3322) — @nkaradzhovGET, MGET, and ARRPOP (#3205) — @JeanSamGirardextractAllCommands drain the write queue (#3364) — @GiHoon1123connect() instead of hanging when the resolved master is unreachable (#3331) — @GiHoon1123XADD/XTRIM with LIMIT 0 must emit the argument (#3342) — @Develop-KIMXGROUP CREATE/SETID with ENTRIESREAD 0 must emit the argument (#3333) — @Develop-KIMXSETID with ENTRIESADDED 0 must emit the argument (#3324) — @spokodevMEMORY USAGE must emit SAMPLES when 0 (#3328) — @Develop-KIMRESTORE with IDLETIME/FREQ 0 must emit the argument (#3323) — @spokodevGETEX PXAT with a Date must encode milliseconds (#3317) — @spokodevCOPY with DB 0 must emit the DB argument (#3318) — @spokodevFT.CREATE scores (#3355) — @alencristenhScanValuesIterator now yields values instead of field names (#3344) — @winklemadGITHUB_TOKEN to contents: read (#3291) — @arpitjain099FT.SEARCH (#3339) — @nkaradzhovXCLAIM JUSTID (#3376) — @Piyush0049LATENCY LATEST test (#3326) — @nkaradzhovrootNodes config is not inherited by node connections (#3327) — @nkaradzhovend event description to reference close() and destroy() (#3332) — @Wnayarjws (#3372), on-headers / express-session (#3371), uuid / nyc (#3370), esbuild / tsx (#3309) — @dependabotFull Changelog: https://github.com/redis/node-redis/compare/redis@6.1.0...redis@6.2.0
This release brings a broad wave of new command coverage across the client and modules. The time-series package gains the most: new TS.NRANGE/TS.NREVR
This release brings a broad wave of new command coverage across the client and modules. The time-series package gains the most: new TS.NRANGE/TS.NREVRANGE multi-key pivot commands, a TS.READ cursor reader, TS.QUERYLABELS, EXCLUDEEMPTY on MRANGE/MREVRANGE, and multi-aggregator support. RediSearch adds FT.ALIASLIST, a COLLECT reducer for FT.AGGREGATE, HNSW RERANK, timeout warnings on the FT.SEARCH family, and the full set of stemmer languages. The core client adds SUNIONCARD/SDIFFCARD, LMOVEM/BLMOVEM, ZREVRANK WITHSCORE, COMMAND DOCS, and XREAD MAXCOUNT/MAXSIZE. A large batch of correctness fixes lands for zero-valued optional arguments (LIMIT 0, DB 0, SAMPLES 0, ENTRIESREAD 0, IDLETIME/FREQ 0, ENTRIESADDED 0) that were previously dropped from the wire, alongside several cluster and sentinel connection-lifecycle fixes.
The new HIMPORT command family (managed fieldset lifecycle) ships as experimental — see the warning below.
HIMPORT family and its FieldsetRegistry/PreparedFieldsets API are experimental and unstable; the surface may change or be removed in a future release. Do not depend on it in production.6.2.0-beta.0 releases across all workspaces (client, bloom, json, search, time-series, entraid, redis)Full Changelog: https://github.com/redis/node-redis/compare/9ba65ddb35...043d304f95
feat: add key prefixing (fixes #2982) by @gajus in https://github.com/redis/node-redis/pull/3312
Full Changelog: https://github.com/redis/node-redis/compare/redis@6.0.1...redis@6.1.0
ci: bump GitHub Actions to Node 24-compatible versions by @nkaradzhov in https://github.com/redis/node-redis/pull/3298
Full Changelog: https://github.com/redis/node-redis/compare/redis@6.0.0...redis@6.0.1
entraid: bump @azure/msal-node to 5.x to drop vulnerable transitive uuid (CVE-2026-41907)
This is the first major release of node-redis since 5.x. The headline change is RESP3 by default, alongside broader Redis 8.8 command coverage, pubsub/cluster reliability fixes, and a bumped minimum Node.js version.
See the v5 → v6 migration guide for migration steps.
keepAliveInitialDelay (30s) and commandTimeout (5s) (#3292)@azure/msal-node to 5.x to drop vulnerable transitive uuid (CVE-2026-41907) (#3269)CLIENT UNBLOCK command (#3266)XNACK command with options (#3238)INCREX and INCREXBYFLOAT commands (#3288)COUNT aggregator to ZINTER / ZINTERSTORE / ZUNION / ZUNIONSTORE (#3243)FPHA option to JSON.SET (#3235)duplicate() method to RedisSentinel (#3212)unix:// URLs in parseURL (#3271)RedisClient, RedisCluster, RedisSentinel and pool classes (#3251)LOAD * in FT.AGGREGATE (#3241)@azure/msal-node to 5.x to drop vulnerable uuid transitive (#3269)min-release-age cooldown to .npmrc (#3286)basic-ftp (#3225), tmp and @inquirer/editor (#3294)We'd like to thank all the contributors who worked on this release! @Rohan5commit, @opensourcezeal, @aarond-sp, @claygeo, @raashish1601, @watersRand, @PavelPashov, @elimelt, @nkaradzhov
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.12.1...redis@6.0.0
Nothing published for this version
feat: expose sendCommand on multi for all clients by @nkaradzhov in https://github.com/redis/node-redis/pull/3181
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 aut
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
Add CLAIM attribute to XREADGROUP command
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
fix(ts): use all commands in cluster type by @nkaradzhov in https://github.com/redis/node-redis/pull/3065
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.8.3...redis@5.9.0
Fix: resolve doubly linked list push issue by @ntvviktor in https://github.com/redis/node-redis/pull/3085
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.9.0-beta.2...redis@5.9.0-beta.3
feat: add default modules to createClientPool by @killagu in https://github.com/redis/node-redis/pull/3088
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.9.0-beta.1...redis@5.9.0-beta.2
fix(cluster): prevent infinite loop by @nkaradzhov in https://github.com/redis/node-redis/pull/3078
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.9.0-beta.0...redis@5.9.0-beta.1
fix(ts): use all commands in cluster type by @nkaradzhov in https://github.com/redis/node-redis/pull/3065
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.8.2...redis@5.9.0-beta.0
fix: add typed/untyped mode support for multi-commands by @PavelPashov in https://github.com/redis/node-redis/pull/3084
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.8.2...redis@5.8.3
Clustering sendCommand docs by @nfriedly in https://github.com/redis/node-redis/pull/3053
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
chore(tests): bump test container version 8.2 by @nkaradzhov in https://github.com/redis/node-redis/pull/3046
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.8.0...redis@5.8.1
Add support svs vamana index creation by @PavelPashov in https://github.com/redis/node-redis/pull/3025
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.7.0...redis@5.8.0
fix(pool): chain promise handlers to prevent unhandled rejections by @PavelPashov in https://github.com/redis/node-redis/pull/3035
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.6.1...redis@5.7.0
docs: fix hyperlink for lua scripts, functions by @cloneot in https://github.com/redis/node-redis/pull/3015
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.6.0...redis@5.6.1
fix(client): make unstable cmds throw by @nkaradzhov in https://github.com/redis/node-redis/pull/2990
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.1 to 5.5.5, skipping a few minor versions. No
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
Nothing published for this version
fix(handshake): ignore errors on client.setinfo by @nkaradzhov in https://github.com/redis/node-redis/pull/2969
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.1.0...redis@5.1.1
fix(client): add type annotations by @nkaradzhov in https://github.com/redis/node-redis/pull/2949
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
doc: clarify connection pooling in createClient and fix broken link in isolationPoolOptions by @rickyssj2 in https://github.com/redis/node-redis/pull/
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.0.0...redis@5.0.1
EntraID added support for azure identity by @bobymicroby in https://github.com/redis/node-redis/pull/2901
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
⚠️ This is an alpha/pre-release version. DO NOT USE IN PRODUCTION!
⚠️ This is an alpha/pre-release version. DO NOT USE IN PRODUCTION!
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})
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.0.0-next.6...redis@5.0.0-next.7
⚠️ This is an alpha/pre-release version. DO NOT USE IN PRODUCTION!
⚠️ This is an alpha/pre-release version. DO NOT USE IN PRODUCTION!
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.0.0-next.5...redis@5.0.0-next.6
⚠️ This is an alpha/pre-release version. DO NOT USE IN PRODUCTION!
⚠️ This is an alpha/pre-release version. DO NOT USE IN PRODUCTION!
You can find further details here:
:warning: This is an alpha/pre-release version. DO NOT USE IN PRODUCTION!
:warning: This is an alpha/pre-release version. DO NOT USE IN PRODUCTION!
https://github.com/redis/node-redis/blob/v5/packages/redis/README.md https://github.com/redis/node-redis/blob/v5/docs/v5.md https://github.com/redis/node-redis/blob/v5/docs/v4-to-v5.md
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Upgrade @redis/client from 1.5.16 to 1.6.0
@redis/client from 1.5.16 to 1.6.0@redis/json from 1.0.6 to 1.0.7@redis/search from 1.1.6 to 1.2.0@redis/time-series from 1.0.5 to 1.1.0Upgrade @redis/client from 1.5.16 to 1.5.17
@redis/client from 1.5.16 to 1.5.17Upgrade @redis/client from 1.5.14 to 1.5.16
@redis/client from 1.5.14 to 1.5.16Upgrade @redis/client from 1.5.13 to 1.5.14
@redis/client from 1.5.13 to 1.5.14Upgrade @redis/client from 1.5.12 to 1.5.13
@redis/client from 1.5.12 to 1.5.13Upgrade @redis/client from 1.5.11 to 1.5.12
@redis/client from 1.5.11 to 1.5.12@redis/graph from 1.1.0 to 1.1.1@redis/json from 1.1.5 to 1.1.6Revert the minimum node version change
@redis/client from 1.5.9 to 1.5.10@redis/search from 1.1.3 to 1.1.4@redis/json from 1.0.4 to 1.0.5Upgrade @redis/client from 1.5.9 to 1.5.10
@redis/client from 1.5.9 to 1.5.10@redis/search from 1.1.3 to 1.1.4@redis/json from 1.0.4 to 1.0.5upgrade @redis/client from 1.5.8 to 1.5.9
@redis/client from 1.5.8 to 1.5.9@redis/time-series from 1.0.4 to 1.0.5upgrade @redis/client from 1.5.7 to 1.5.8
@redis/client from 1.5.7 to 1.5.8@redis/search from 1.1.2 to 1.1.3upgrade @redis/client from 1.5.6 to 1.5.7
@redis/client from 1.5.6 to 1.5.7upgrade @redis/client from 1.5.5 to 1.5.6
@redis/client from 1.5.5 to 1.5.6upgrade @redis/client from 1.5.4 to 1.5.5
@redis/client from 1.5.4 to 1.5.5upgrade @redis/client from 1.5.3 to 1.5.4
@redis/client from 1.5.3 to 1.5.4upgrade @redis/client from 1.5.2 to 1.5.3
@redis/client from 1.5.2 to 1.5.3upgrade @redis/client from 1.5.0 to 1.5.2
@redis/client from 1.5.0 to 1.5.2upgrade @redis/client from 1.4.2 to 1.5.0
@redis/client from 1.4.2 to 1.5.0@redis/bloom from 1.1.0 to 1.2.0@redis/search from 1.1.0 to 1.1.1## Enhancements * upgrade @redis/client
@redis/client## Enhancements * upgrade @redis/client * upgrade @redis/time-series
@redis/client@redis/time-seriesConnecting to cluster example by @varadkarpe in https://github.com/redis/node-redis/pull/2298
@redis/client@redis/bloom@redis/graph## Enhancements * Upgrade @redis/json
@redis/json## Enhancements * Upgrade @redis/client * Upgrade @redis/search
@redis/client@redis/search## Enhancements * Upgrade @redis/client
@redis/clientYour coding agent can read these notes before it upgrades. Set up the MCP server →