Skip to content

rubikzube/node-redis-sentinel

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This is a direct fork of node-redis-sentinel with one minor difference, it allows errors to bubble up the stack so that they can be logged.

node-redis-sentinel

Wrapper around node_redis creating a client pointing at the master server which autoupdates when the master goes down.

var sentinel = require('redis-sentinel');

// List the sentinel endpoints
var endpoints = [
    {host: '127.0.0.1', port: 26379},
    {host: '127.0.0.1', port: 26380}
];

var opts = {}; // Standard node_redis client options
var masterName = 'mymaster';

// masterName and opts are optional - masterName defaults to 'mymaster'
var redisClient = sentinel.createClient(endpoints, masterName, opts);

// redisClient is a normal redis client, except that if the master goes down
// it will keep checking the sentinels for a new master and then connect to that.
// No need to monitor for reconnects etc - everything handled transparently
// Anything that persists over the normal node_redis reconnect will persist here. 
// Anything that doesn't, won't.

// An equivalent way of doing the above (if you don't want to have to pass the endpoints around all the time) is
var Sentinel = sentinel.Sentinel(endpoints);
var masterClient = Sentinel.createClient(masterName, opts);

Connection to slaves or the sentinel itself

You can get a connection to a slave (chosen at random) or the first available sentinel from the endpoints by passing in the role attribute in the options. E.g.

// The master is the default case if no role is specified.
var masterClient = sentinel.createClient(endpoints, masterName, {role: 'master'}); 
var slaveClient = sentinel.createClient(endpoints, masterName, {role: 'slave'});
var sentinelClient = sentinel.createClient(endpoints, {role: 'sentinel'});

Where you should also transparently get a reconnection to a new slave/sentinel if the existing one goes down.

TODO

  • We could probably be cleverer with reconnects etc. and there may be issues with the error handling

Licence

MIT

About

Sentinel client for redis

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%