Browse Source

Merge pull request #855 from fintura/info

Improve server keyspace info in .server_info. Closing #610. Thx to @SinisterLight
greenkeeper-update-all
Ruben Bridgewater 9 years ago
parent
commit
b35a685c27
  1. 28
      index.js
  2. 2
      test/node_redis.spec.js

28
index.js

@ -325,20 +325,23 @@ RedisClient.prototype.on_ready = function () {
};
RedisClient.prototype.on_info_cmd = function (err, res) {
var self = this, obj = {}, lines, retry_time;
var self = this;
var obj = {};
var lines = res.toString().split("\r\n");
var i = 0;
var key = 'db' + i;
var line, retry_time, parts, sub_parts;
if (err) {
return self.emit("error", new Error("Ready check failed: " + err.message));
}
lines = res.toString().split("\r\n");
lines.forEach(function (line) {
var parts = line.split(':');
for (i = 0; i < lines.length; i++) {
parts = lines[i].split(':');
if (parts[1]) {
obj[parts[0]] = parts[1];
}
});
}
obj.versions = [];
/* istanbul ignore else: some redis servers do not send the version */
@ -348,6 +351,19 @@ RedisClient.prototype.on_info_cmd = function (err, res) {
});
}
while (obj[key]) {
parts = obj[key].split(',');
obj[key] = {};
while (line = parts.pop()) {
sub_parts = line.split('=');
if (sub_parts[1]) {
obj[key][sub_parts[0]] = +sub_parts[1];
}
}
i++;
key = 'db' + i;
}
// expose info key/vals to users
this.server_info = obj;

2
test/node_redis.spec.js

@ -227,6 +227,8 @@ describe("The node_redis client", function () {
var end = helper.callFuncAfter(function () {
client.removeListener("connect", on_connect);
client.removeListener("reconnecting", on_recon);
assert.strictEqual(client.server_info.db0.keys, 2);
assert.strictEqual(Object.keys(client.server_info.db0).length, 3);
done();
}, 4);
client.get("recon 1", helper.isString("one", end));

Loading…
Cancel
Save