cluster book node.js redis redis-cluster

node.js - book - ¿Comando Redis para obtener todas las claves disponibles en Redis Cluster?



redis server options (4)

¿Has intentado usar el paquete node-redisscan ? Te permite usar los comandos SCAN en los clusters de Redis.

Tendrías que recoger cada clave coincidente con la devolución de llamada. Así es como lo harías (directamente sacado del archivo 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(); } });

Estoy usando esto

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

Pero solo da claves de solo uno del cluster redis. ¿Cómo puedo obtener claves de todos los clústeres?


Ejecute el comando $ npm install redis para instalar 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]); } });


No puede obtener claves para todos los nodos con un solo comando. Tienes que conseguir claves para todos los nodos y fusionarlos. Referencia - https://github.com/antirez/redis/issues/1962

Puedes hacer algo como

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


Puede usar este código para encontrar claves de todos los grupos. Por favor, consulte el npmjs.com/package/node-redis-cluster para obtener más información.

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