ioredis

🚀 A robust, performance-focused, and full-featured Redis client for Node.js.

MIT License

Stars
13.8K
Committers
160

Bot releases are hidden (Show)

ioredis - v4.1.0

Published by luin about 6 years ago

Bug Fixes

  • cluster: quit() ignores errors caused by disconnected connection (#720) (fb3eb76)
  • cluster: robust solution for pub/sub in cluster (#697) (13a5bc4), closes #696
  • cluster: stop subscriber when disconnecting (fb27b66)

Features

  • cluster: re-select subscriber when the currenct one is failed (c091f2e)

Performance Improvements

  • remove lodash deps for smaller memory footprint (80f4a45)
  • cluster: make disconnecting from cluster faster (#721) (ce46d6b)
ioredis - v4.0.2

Published by luin about 6 years ago

Bug Fixes

  • cluster: subscription regards password setting (47e2ab5), closes #718

Performance Improvements

  • reduce package bundle size (eb68e9a)
ioredis - v4.0.1

Published by luin about 6 years ago

Bug Fixes

  • cluster: robust solution for pub/sub in cluster (#697) (13a5bc4), closes #696
ioredis - v4.0.0 Native Promise

Published by luin about 6 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

  • port is ignored when path set to null (d40a99e), closes #668

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 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.
  • The maxRetriesPerRequest is set to 20 instead of null (same behavior as ioredis v3)
    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. Calling Redis as a function like
    Redis(/* options /)is deprecated and will not be supported in the next major version, usenew Redis(/ options */)` instead.
ioredis -

Published by luin about 6 years ago

Bug Fixes

  • Sentinel: unreachable errors when sentinals are healthy (7bf6fea)
  • resolve warning for Buffer() in Node.js 10 (6144c56)
ioredis -

Published by luin over 6 years ago

Upgrade redis-parser to v3. See release notes on redis-parser repo for details.

ioredis -

Published by luin over 6 years ago

Bug Fixes

  • remove unnecessary bluebird usage (2502b1b)
ioredis -

Published by luin over 6 years ago

Bug Fixes

  • Deprecated Redis() in favor of new Redis() (8e7c6f1)
  • 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)

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
  • 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.
  • The maxRetriesPerRequest is set to 20 instead of null (same behavior as ioredis v3)
    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. Calling Redis as a function like
    Redis(/* options /)is deprecated and will not be supported in the next major version, usenew Redis(/ options */)` instead.
  • 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 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)
ioredis - v3.2.2

Published by luin almost 7 years ago

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

ioredis - v3.2.1

Published by luin about 7 years ago

Bug Fixes

  • Cluster: empty key name was sent to random nodes (e42f30f). Thank @Aditya-Chowdhry!
ioredis - v3.2.0

Published by luin about 7 years ago

Features

  • truncate large/long debug output arguments (#523) (cf18554)
ioredis - v3.1.4

Published by luin about 7 years ago

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.

❤️

ioredis - v3.1.3

Published by luin about 7 years ago

Bug Fixes

  • allow convertObjectToArray to handle objects with no prototype (#507) (8e17920)
ioredis - v3.1.2

Published by luin about 7 years ago

Bug Fixes

  • stop mutating the arguments when calling multi (#480) (a380030)
ioredis - v3.1.1: Hi, Node.js v8.0.0

Published by luin over 7 years ago

In this version, we added Node.js v8 into our test matrix on Travis CI.

Bug Fixes

  • show error name in the error stack for Node.js 8 (a628aa7)
ioredis - https://github.com/redis/ioredis/releases/tag/v3.1.0

Published by luin over 7 years ago

Bug Fixes

  • non-owned properties cause empty args for mset & hmset (#469) (e7b6352)

Features

  • cluster: add option to control timeout on cluster slots refresh (#475) (493d095)
ioredis - https://github.com/redis/ioredis/releases/tag/v3.0.0

Published by luin over 7 years ago

Features

  • pipeline: add #length to get the command count (a6060cb), closes #461
  • sentinel: allow connection to IPv6-only sentinels (#463) (a389f3c)
ioredis - https://github.com/redis/ioredis/releases/tag/v3.0.0-2

Published by luin over 7 years ago

Bug Fixes

  • restore the default connectTimeout to 10000 (dc8256e)
ioredis - https://github.com/redis/ioredis/releases/tag/v3.0.0-1

Published by luin over 7 years ago

Features

  • add debug logs for resolved sentinel nodes (8f3d3f7)
  • report error on Sentinel connection refused (#445) (#446) (286a5bc)
  • set default port of sentinels to 26379. (#441) (539fe41)

BREAKING CHANGES

  • The default port of sentinels are now 26379 instead of 6379. This shouldn't break your app in most case since few setups has the sentinel server running on 6379, but if it's your case and the port isn't set explicitly, please go to update it.
ioredis -

Published by luin over 7 years ago

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.

Other Changes

  • increase the default reconnection interval (c5fefb7), closes #414

BREAKING CHANGES

  • Although the interface doesn't change after upgrading the js parser, there may be still some potential internal differences that may break the applications which rely on them. Also, force a major version bump emphasizes the dropping of the hiredis.