问题
I am using this
redisManager.redisClient.keys('*example*', function (err, keys) {
})
But it only gives keys from only one of the redis cluster. How can I get keys from all cluster?
回答1:
You can't get keys for all nodes using a single command. You have to get keys for all nodes and merge them. Reference - https://github.com/antirez/redis/issues/1962
You can do something like.
var redis = require('redis');
redisConfig = new Array(
{"port": 1234, "host": "192.168.1.2"},
{"port": 5678, "host": "192.168.1.3"}
);
keys = new Array();
allKeys = new Array();
for(i = 0; i < redisConfig.length; i++){
redisClient = redis.createClient(redisConfig[i].port, redisConfig[i].host);
keys[i] = redisClient.keys('*example*', function (err, keys) {
allkeys = [...new Set([...allKeys ,...keys[i]])];
})
}
回答2:
You can use this code inorder to find keys from all cluster. Please refer to link for more info.
var RedisCluster = require('node-redis-cluster').RedisCluster;
var rcluster = RedisCluster.create([
{ port: 6379, host: '10.0.0.1' },
{ port: 6379, host: '10.0.0.2' },
{ port: 6379, host: '10.0.0.3' },
]);
rcluster.execAll('keys', ['*'], function(err, results) {
/* results will be
{
'10.0.0.1:6379': [ // keys],
'10.0.0.2:6379': [ // keys],
'10.0.0.3:6379': [ // keys]
}
*/
});
回答3:
Have you tried using the node-redisscan package? It allows you to use SCAN
commands on Redis clusters.
You'd have to collect each matching key with the callback. Here's how you'd do it (directly lifted from the README file) -
var redisScan = require('redisscan');
var redis = require('redis').createClient();
redisScan({
redis: redis,
each_callback: function (type, key, subKey, value, done) {
console.log(type, key, subKey, value);
done();
},
done_callback: function (err) {
if (err) throw err;
redis.quit();
}
});
回答4:
Run command $ npm install redis
to install redis.
var redis = require('redis'),
client = redis.createClient();
client.keys('*', function (err, keys) {
if (err) return console.log(err);
for(var i = 0, len = keys.length; i < len; i++) {
console.log(keys[i]);
}
});
来源:https://stackoverflow.com/questions/36053413/redis-command-to-get-all-available-keys-on-redis-cluster