18

私はこれを使用しています

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

ただし、redis クラスターの 1 つのみからのキーのみを提供します。すべてのクラスターからキーを取得するにはどうすればよいですか?

4

5 に答える 5

1

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]])];
    })
}
于 2016-08-31T21:41:43.983 に答える