Команда Redis для получения всех доступных ключей в Redis Cluster?

Я использую этот

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

Но он дает ключи только от одного из кластера redis. Как я могу получить ключи от всего кластера?

Ответы

Ответ 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]])];
    })
}

Ответ 2

Вы пытались использовать node-redisscan пакет? Он позволяет использовать команды SCAN в кластерах Redis.

Вам нужно будет собрать каждый соответствующий ключ с обратным вызовом. Вот как вы это сделаете (непосредственно снятый с файла 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();
    }
});

Ответ 3

Вы можете использовать этот код для поиска ключей из всего кластера. Для получения дополнительной информации см. ссылка.

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