multi-redis

Use a hashring to manage distributing load to multiple redis clients

multi-redis

A simple wrapper around the node_redis and node-hashring modules to allow for an easy way to use consistent hashing to distribute to multiple redises.

// 
// Pass in array of redis objects of the form... 
// [ 
//   { 
//     "host": "127.0.0.1", 
//     "port": 6379 
//   } 
// ] 
// into this function 
// 
var multiRedis = require('../')();
var key = 'jcrugzz/test';
// 
// Return a redis client based on the consistent hasing of hashring 
// 
var client = multiRedis.client(key);
 
// 
// Now we have a standard `node_redis` client 
// 
client.set(key, 'O hai there', function (err) {
  if (err) {
    process.exit(1);
    return console.error(err)
  }
  console.log('SUCCESS');
 
  client.get(key, function (errres) {
    if (err) {
      process.exit(1);
      return console.error(err)
    }
    console.log(res);
    process.exit(0);
  });
});

Instantiates a multiRedis instance that sets up the array of redis clients

Retrieves the correct client based on key given using the consistent hashing of node-hashring

Calls redis.end() for all of the underlying redis clients instantiated by the constructor

This is how you handle the errors that are emitted from the underlying redis. Useful for logging purposes as the node_redis library handles reconnections for you but stil emits ECONNREFUSED errors when the server is not reachable.

MIT