NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #1853 most downloaded on npm
A robust, performance-focused and full-featured Redis client for Node.js.
Last release 2 months ago
31 Jul 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
12 years old
251 releases · first in 2015
add updateSentinels option to control new sentinel values being added to the original list (#814) (50a9db7), closes #798
One column per quarter.
subscriber initialization when using Cluster (#792) (32c48ef), closes #791
Cluster: ignore connection errors for subscriber. (#790) (f368c8a), closes #768
add maxLoadingRetryTime option when redis server not ready
add checking and loading scripts uniqueness in pipeline
# 4.5.0 (2019-01-07) ### Features * allow TLS when using Sentinel
support setting connectTimeout in Electron
cluster: handle connection errors by reconnection (#762) (21138af), closes #753
## 4.2.3 (2018-11-24) ### Bug Fixes * MOVED slot redirection handler
## 4.2.2 (2018-10-20)
## 4.2.1 (2018-10-19)
<a name="4.1.0"></a>
<a name="4.0.2"></a>
support customize dns lookup function (#723) (b9c4793), closes antirez/redis#2410
cluster: quit() ignores errors caused by disconnected connection
cluster: subscription regards password setting (47e2ab5), closes #718
cluster: robust solution for pub/sub in cluster (#697) (13a5bc4), closes #696
<a name="4.0.0"></a>
This is a major release and contain breaking changes. Please read this changelog before upgrading.
solves vulnerabilities dependencies
This is a major release and contain breaking changes. Please read this changelog before upgrading.
Redis#connect() will be resolved when status is ready (#648) (f0c600b)redis.get('foo').timeout(500) now should be failed since the native
Promise doesn't support the timeout method. You can switch back to the Bluebird
implementation by setting Redis.Promise:const Redis = require('ioredis')
Redis.Promise = require('bluebird')
const redis = new Redis()
// Use bluebird
assert.equal(redis.get().constructor, require('bluebird'))
// You can change the Promise implementation at any time:
Redis.Promise = global.Promise
assert.equal(redis.get().constructor, global.Promise)
Redis#connect() will be resolved when status is ready
instead of connect:const redis = new Redis({ lazyConnect: true })
redis.connect().then(() => {
assert(redis.status === 'ready')
})
Cluster#connect() will be resolved when the connection
status become ready instead of connect.new keyword is required explicitly. Calling Redis as a function like
Redis(/* options /)is deprecated and will not be supported in the next major version, usenew Redis(/ options */)` instead.Nothing published for this version
Nothing published for this version
Nothing published for this version
Upgrade the debug module: In order to close a low-severity ReDoS vulnerability, the debug module should be updated to at least v2.6.9
Upgrade the debug module: In order to close a low-severity ReDoS vulnerability, the debug module should be updated to at least v2.6.9
Cluster: empty key name was sent to random nodes (e42f30f). Thank @Aditya-Chowdhry!
<a name="3.2.0"></a>
<a name="3.1.4"></a>
truncate large/long debug output arguments
We mistakenly used Object.assign to replace lodash.assign in v3.1.3, which is not supported by the old Node.js version (0.10.x). This change was a BC
We mistakenly used Object.assign to replace lodash.assign in v3.1.3, which is not supported
by the old Node.js version (0.10.x). This change was a BC change and shouldn't happen without changing
the major version, so we added lodash.assign back.
We apologize for any inconvenience.
❤️
allow convertObjectToArray to handle objects with no prototype
stop mutating the arguments when calling multi
In this version, we added Node.js v8 into our test matrix on Travis CI.
In this version, we added Node.js v8 into our test matrix on Travis CI.
<a name="3.1.0"></a>
<a name="3.0.0"></a>
<a name="3.0.0-2"></a>
<a name="3.0.0-1"></a>
<a name="3.0.0-0"></a>
This is a performance-focused release. We finially switch to the new version of JavaScript parser and drop the support for hiredis (Thanks to the lovely community!). Also, we switch to denque to improve the queueing performance.
Let us know if there's any issue when using this pre-release.
<a name="2.5.0"></a>
<a name="2.4.3"></a>
non-owned properties cause empty args for mset & hmset
pipeline: add #length to get the command count (a6060cb), closes #461
Nothing published for this version
Nothing published for this version
Nothing published for this version
quit immediately when in reconnecting state
wait all the commands in a pipeline before sending #411
handle error when creating tls connection
by default call setNoDelay on the stream
<a name="2.4.0"></a>
<a name="2.3.1"></a>
Sentinel preferredSlaves option
prevent sentinel from getting duplicated nodes
reject with general error in Redis#connect
cluster: ensure node exists before being redirected via an ASK
remove unnecessary unhandled error warnings
fix transaction with dropBufferSupport:true
Refer to Breaking Changes between V1 and V2 for all breaking changes.
Refer to Breaking Changes between V1 and V2 for all breaking changes.
Changes since 2.0.0-rc4:
reconnect when ready check failed
CLUSTER: fix cluster not disconnected when called disconnect method (#281) (91998e3), closes (#281
dependencies: upgrade all dependencies to the newest version (3fdafc8).
<a name="2.0.0-alpha3"></a>
Pipeline#execBuffer() is deprecated. Use Pipeline#exec() instead.
Pipeline#execBuffer() is deprecated. Use Pipeline#exec() instead.cluster: fix memory leaking in sendCommand method
cluster: avoid command.reject being overwritten twice
Cluster#masterNodes and Cluster#nodes is removed. Use Cluster#nodes('masters') and Cluster#nodes('all') instead.Cluster#to() is removed. Use Promise.all(Cluster#nodes().map(function (node) {})) instead.readOnly is removed. Check out scaleReads option.select db on connect event to prevent subscribe errors (829bf26), closes #255
"MOVED" err not crashing process when slot was not assigned
Support returning buffers for transactions (#223).
Add argument transformer for msetnx to support Map (#218).
Fix mset transformer not supporting keyPrefix (#217).
mset transformer not supporting keyPrefix (#217).[Cluster] Select a random node when the target node is closed.
maxRedirections also works for CLUSTERDOWN.[Cluster] Fix failover queue not being processed. Shahar Mor.
[Cluster] Add queue support for failover and CLUSTERDOWN handling. Shahar Mor.
scanStream (#199).Your coding agent can read these notes before it upgrades. Set up the MCP server →