From 163e0aa9e328e73b8aa50daa7e96414c254799c5 Mon Sep 17 00:00:00 2001 From: Tom Lee Date: Mon, 27 Apr 2015 15:58:28 -0700 Subject: [PATCH 1/2] add client --- Client.js | 25 +++++++++++++++++++++++++ index.js | 3 ++- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 Client.js diff --git a/Client.js b/Client.js new file mode 100644 index 0000000..1a6ec83 --- /dev/null +++ b/Client.js @@ -0,0 +1,25 @@ +var EventEmitter = require('events').EventEmitter; +var util = require('util'); +var redisClusterSlot = require('./redisClusterSlot'); + +function Client() { + EventEmitter.call(this); +} +util.inherits(Client, EventEmitter); + +Client.prototype.getSlot = function (key) { + if (!key) return; + return redisClusterSlot(key); +}; + +Client.prototype.getNode = function (key) { + if (!this.nodes) return; + var slot = this.getSlot(key); + if (!slot) return; + var l = this.nodes.length; + for (var i = 0; i < l; i++) { + var node = this.nodes[i]; + if (node && node.slots && node.slots[0] <= slot && slot <= node.slots[1]) + return node; + } +}; diff --git a/index.js b/index.js index c16b31d..4c658f6 100644 --- a/index.js +++ b/index.js @@ -5,6 +5,7 @@ try { fastRedis = require('redis-fast-driver'); } catch(e) {} +var Client = require('./Client'); var redisClusterSlot = require('./redisClusterSlot'); var commands = require('./lib/commands'); @@ -140,7 +141,7 @@ function connectToNodes (cluster) { } function bindCommands (nodes, oldClient) { - var client = oldClient || new events.EventEmitter(); + var client = oldClient || new Client(); client.nodes = nodes; //catch on error from nodes function onError(err) { From bc32293eaf7d1b58fb5ec14121b3bb49e334fe70 Mon Sep 17 00:00:00 2001 From: Tom Lee Date: Mon, 27 Apr 2015 16:12:45 -0700 Subject: [PATCH 2/2] export Client --- Client.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Client.js b/Client.js index 1a6ec83..4922837 100644 --- a/Client.js +++ b/Client.js @@ -23,3 +23,5 @@ Client.prototype.getNode = function (key) { return node; } }; + +module.exports = Client; \ No newline at end of file