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