2016-03-17 11 views
15

私はこのRedis Cluster上で利用可能なすべての鍵を取得するRedisコマンド?

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

を使用しています。しかし、それは唯一のRedisクラスターの唯一のキーを提供します。すべてのクラスタからどのようにキーを取得できますか?

+0

クラスタのすべてのノードが同じデータを共有して同じ結果を返さないようにする必要がありますか?それとも、ここで複数のクラスターを話していますか? –

+0

node-redis-clusterこれを実行できます。ここで確認できます:https://www.npmjs.com/package/node-redis-cluster – neohope

+0

@john Siu、すべてのノードが別々のデータを提供 –

答えて

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

@Albin Mathew助けてくれますか? –

0

node-redisscanパッケージを使用してみましたか? RedisクラスタでSCANコマンドを使用することができます。

コールバックで各一致するキーを収集する必要があります。 READMEファイルから直接持ち上げる方法は次のとおりです。 -

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(); 
    } 
}); 
0

このコードをインラインで使用すると、すべてのクラスタからキーを見つけることができます。詳細は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] 
    } 
    */ 
    }); 
関連する問題