Skip to content

A custom implementation of the node_redis retry_strategy function.

License

Notifications You must be signed in to change notification settings

zsimo/node-redis-retry-strategy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

node-redis-retry-strategy

License: MIT Build Status codecov Dependencies install size

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:

allow_to_start_without_connection type boolean

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;

number_of_retry_attempts type number ms

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;

delay_of_retry_attempts type number ms

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;

wait_time type number ms

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;

License

MIT

About

A custom implementation of the node_redis retry_strategy function.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published