2016-03-17 10 views
15

मैं इसरेडिस क्लस्टर पर सभी उपलब्ध कुंजी प्राप्त करने के लिए रेडिस कमांड?

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

उपयोग कर रहा हूँ लेकिन यह केवल redis क्लस्टर का केवल एक से चाबी देता है। मैं सभी क्लस्टर से चाबियाँ कैसे प्राप्त कर सकता हूं?

+0

क्या क्लस्टर के सभी नोड्स एक ही डेटा साझा नहीं करना चाहिए और एक ही परिणाम देना चाहिए? या हम यहां कई क्लस्टर बोल रहे हैं? –

+0

नोड-रेडिस-क्लस्टर यह कर सकता है। आप इसे यहां देख सकते हैं: https://www.npmjs.com/package/node-redis-cluster – neohope

+0

@john Siu, अलग-अलग डेटा देने वाले सभी नोड्स –

उत्तर

0

आप एक ही कमांड का उपयोग कर सभी नोड्स के लिए कुंजी नहीं प्राप्त कर सकते हैं। आपको सभी नोड्स के लिए चाबियाँ मिलनी होंगी और उन्हें मर्ज करना होगा। संदर्भ - 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

@ एल्बिन मैथ्यू क्या इससे मदद मिलती है? –

0

क्या आपने node-redisscan पैकेज का उपयोग करने का प्रयास किया है? यह आपको रेडिस क्लस्टर पर 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

आप सभी क्लस्टर से चाबी खोजने के लिए inorder इस कोड का उपयोग कर सकते हैं। अधिक जानकारी के लिए कृपया 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] 
    } 
    */ 
    }); 
संबंधित मुद्दे