Redis v4.0.0 Release Notes
Release Date: 2018-08-14 // over 5 years ago-
🚀 This is a major release and contain breaking changes. Please read this changelog before upgrading.
🔄 Changes since 4.0.0-3:
🐛 Bug Fixes
🔋 Features
- export Pipeline for inheritances enabling (#675) (ca58249)
- 📦 export ScanStream at package level (#667) (5eb4198)
🔄 Changes since 3.x
🐛 Bug Fixes
- Sentinel: unreachable errors when sentinals are healthy (7bf6fea)
- ⚠ resolve warning for Buffer() in Node.js 10 (6144c56)
- don't add cluster.info to the failover queue before ready (491546d)
- solves vulnerabilities dependencies (2950b79)
- Cluster: issues when setting enableOfflineQueue to false (#649) (cfe4258)
🐎 Performance Improvements
- 🐎 upgrade redis-parser for better performance.
🔋 Features
- 👉 use native Promise instead of Bluebird, and allow users to switch back. (da60b8b)
- ➕ add maxRetriesPerRequest option to limit the retries attempts per command (1babc13)
Redis#connect()
will be resolved when status is ready (#648) (f0c600b)- ➕ add debug details for connection pool (9ec16b6)
- wait for ready state before resolving cluster.connect() (7517a73)
💥 BREAKING CHANGES
- ⬇️ Drop support for < node v6
- 👉 Use native Promise instead of Bluebird. This change makes all the code that rely on the features provided by Bluebird not working
⏱ anymore. For example,
redis.get('foo').timeout(500)
now should be failed since the native ⏱ Promise doesn't support thetimeout
method. You can switch back to the Bluebird implementation by settingRedis.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 ofconnect
:
const redis = new Redis({ lazyConnect: true }) redis.connect().then(() => { assert(redis.status === 'ready') })
Cluster#connect()
will be resolved when the connection status becomeready
instead ofconnect
.- The maxRetriesPerRequest is set to 20 instead of null (same behavior as ioredis v3) 0️⃣ by default. So when a redis server is down, pending commands won't wait forever until the connection become alive, instead, they only wait about 10s (depends on the retryStrategy option)
- The
new
keyword is required explicitly. CallingRedis
as a function like Redis(/* options /)is deprecated and will not be supported in the next major version, use
new Redis(/ options */)` instead.