Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Redis命令获取Redis集群上的所有可用密钥?_Node.js_Redis_Redis Cluster - Fatal编程技术网

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

Node.js Redis命令获取Redis集群上的所有可用密钥?,node.js,redis,redis-cluster,Node.js,Redis,Redis Cluster,我在用这个 redisManager.redisClient.keys('*example*', function (err, keys) { }) 但它只提供一个redis集群的密钥。如何从所有群集获取密钥?使用单个命令无法获取所有节点的密钥。您必须获取所有节点的键并合并它们。 参考- 你可以这样做 var redis = require('redis'); redisConfig = new Array( {"port": 1234, "host": "192.168.1.2"}

我在用这个

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

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

使用单个命令无法获取所有节点的密钥。您必须获取所有节点的键并合并它们。 参考-

你可以这样做

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]])];
    })
}
var redis=require('redis');
redisConfig=新数组(
{“端口”:1234,“主机”:“192.168.1.2”},
{“端口”:5678,“主机”:“192.168.1.3”}
);
keys=新数组();
allKeys=新数组();
对于(i=0;i
您是否尝试过使用该软件包?它允许您在Redis群集上使用
SCAN
命令

您必须用回调函数收集每个匹配的键。下面是您的做法(直接从自述文件中提取)——


您可以使用此代码从所有集群中查找密钥。有关更多信息,请参阅

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

运行命令
$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]);
  }
});  
var redis=require('redis'),
client=redis.createClient();
client.key('*',函数(err,key){
if(err)返回console.log(err);
for(变量i=0,len=keys.length;i
群集的所有节点不应该共享相同的数据并给出相同的结果吗?或者我们这里说的是多个集群?node redis cluster可以做到这一点。您可以在此处查看:@john Siu,所有节点都提供单独的数据。您可以显示如何设置群集值吗?或者您可以使用redisClient.zrange(“示例”,0,-1,函数(错误,回复){@Albin Mathew这有帮助吗?这是一个独立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]);
  }
});