node-redis-retry-strategy
A custom implementation of the node_redis retry_strategy function.
Sometimes, if the Redis server is down, you need to have clients that don't give up and try to reconnect.
"node-redis-retry-strategy" is a function that returns the node_redis retry_strategy
function.
The strategy is: every wait_time
try to connect for number_of_retry_attempts
times (each time separated by delay_of_retry_attempts
).
By default, every 5 minutes, try 5 times to reconnect (every attempt is separated by 500 ms). It retries forever
.
* 2.0 breaking change
: by default do not allow to start the service without a redis connection; to have the previous behaviour set allow_to_start_without_connection
:true
Install
# with npm
npm install node-redis-retry-strategy
# or with yarn
yarn add node-redis-retry-strategy
Usage
// redisClient.js file
var redis = require("redis");
var retryStrategy = require("node-redis-retry-strategy");
var client = redis.createClient({
host: "127.0.0.1",
port: 6379,
retry_strategy: retryStrategy()
});
module.exports = client;
// index.js file
var redisClient = require("redisClient.js");
redisClient.on("connect", function () {
console.log("connected!");
});
redisClient.on("end", function () {
console.log("redis connection has closed");
});
redisClient.on("reconnecting", function (o) {
console.log("redis client reconnecting", o.attempt, o.delay);
});
Options
It accepts options object as a parameter with 4 possible keys:
type boolean
allow_to_start_without_connection Default: false
2 possible scenarios:
-
false
if there is no connection when the service starts, end reconnecting throwing an error and flush all commands -
true
allow to start the service without a redis connection
var redis = require("redis");
var retryStrategy = require("node-redis-retry-strategy");
var client = redis.createClient({
host: "127.0.0.1",
port: 6379,
retry_strategy: retryStrategy({
allow_to_start_without_connection: true
})
});
module.exports = client;
type number
ms
number_of_retry_attempts Default: 5
The number of attempts separated by the delay_of_retry_attempts
. If set to 0, it ends reconnecting with the built in error.
var redis = require("redis");
var retryStrategy = require("node-redis-retry-strategy");
var client = redis.createClient({
host: "127.0.0.1",
port: 6379,
retry_strategy: retryStrategy({
number_of_retry_attempts: 7
})
});
module.exports = client;
type number
ms
delay_of_retry_attempts Default: 500
The delay between each retry attempts.
var redis = require("redis");
var retryStrategy = require("node-redis-retry-strategy");
var client = redis.createClient({
host: "127.0.0.1",
port: 6379,
retry_strategy: retryStrategy({
delay_of_retry_attempts: 1000
})
});
module.exports = client;
type number
ms
wait_time Default: 300000
(5 min)
How long stop retrying to connect.
var redis = require("redis");
var retryStrategy = require("node-redis-retry-strategy");
var client = redis.createClient({
host: "127.0.0.1",
port: 6379,
retry_strategy: retryStrategy({
wait_time: 600000
})
});
module.exports = client;