Redis命令获取Redis群集上的所有可用密钥?

时间:2016-03-17 06:48:41

标签: node.js redis redis-cluster

我正在使用此

redisManager.redisClient.keys('*example*', function (err, keys) {
})

但它只从一个redis集群中提供密钥。如何从所有群集中获取密钥?

3 个答案:

答案 0 :(得分:1)

您无法使用单个命令获取所有节点的密钥。您必须获取所有节点的密钥并合并它们。 参考 - https://github.com/antirez/redis/issues/1962

你可以做类似的事情。

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]])];
    })
}

答案 1 :(得分:1)

您可以使用此代码来查找所有群集中的密钥。有关详细信息,请参阅link

    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]
    }
    */
    });

答案 2 :(得分:-1)

运行命令$ npm install redis以安装 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]);
  }
});