Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

जावास्क्रिप्ट में रेडिस में सभी कुंजी और मान कैसे प्राप्त करें?

सबसे पहले, आपके प्रश्न में समस्या यह है कि, for . के अंदर लूप, client.get एक एसिंक्रोनस . के साथ बुलाया जाता है कॉलबैक जहां सिंक्रोनस for लूप एसिंक्रोनस कॉलबैक की प्रतीक्षा नहीं करेगा और इसलिए अगली पंक्ति res.json({data:jobs}); for . के तुरंत बाद कॉल किया जा रहा है एसिंक्रोनस कॉलबैक से पहले लूप। लाइन के समय res.json({data:jobs}); लागू किया जा रहा है, सरणी jobs अभी भी खाली है [] और प्रतिक्रिया के साथ वापस आना।

इसे कम करने के लिए, आपको async . जैसे किसी भी प्रॉमिस मॉड्यूल का उपयोग करना चाहिए , bluebird , ES6 Promise आदि.

async मॉड्यूल का उपयोग करके संशोधित कोड,

app.get('/jobs', function (req, res) {
    var jobs = [];
    client.keys('*', function (err, keys) {
        if (err) return console.log(err);
        if(keys){
            async.map(keys, function(key, cb) {
               client.get(key, function (error, value) {
                    if (error) return cb(error);
                    var job = {};
                    job['jobId']=key;
                    job['data']=value;
                    cb(null, job);
                }); 
            }, function (error, results) {
               if (error) return console.log(error);
               console.log(results);
               res.json({data:results});
            });
        }
    });
});
<ब्लॉकक्वॉट>

लेकिन Redis . से दस्तावेज़ीकरण, यह देखा गया है कि कीज़ का उपयोग डिबगिंग और विशेष संचालन के लिए किया जाता है, जैसे कि आपके कीस्पेस लेआउट को बदलना और उत्पादन वातावरण के लिए उचित नहीं है।

इसलिए, मैं नीचे एक अन्य मॉड्यूल का उपयोग करने का सुझाव दूंगा जिसे रेडिसकैन कहा जाता है जो नीचे SCAN . का उपयोग करता है KEYS . के बजाय जैसा कि Redis . में सुझाया गया है दस्तावेज़ीकरण।

कुछ इस तरह,

var redisScan = require('redisscan');
var redis     = require('redis').createClient();


redisScan({
        redis: redis,
        each_callback: function (type, key, subkey, value, cb) {
            console.log(type, key, subkey, value);
            cb();
        },
        done_callback: function (err) {
            console.log("-=-=-=-=-=--=-=-=-");
            redis.quit();
        }
    });


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. डोकर से रेडिस से कनेक्ट करने में असमर्थ

  2. क्या FUSE फाइल सिस्टम के साथ Linux VFS कैश रखना संभव है?

  3. रिमोट रेडिस सर्वर से कैसे जुड़ें?

  4. मैं रेडिस, एक्सप्रेस और सॉकेट का उपयोग करके काम करने के लिए सत्र कैसे प्राप्त कर सकता हूं।

  5. Redis समर्थित ASP.NET सत्रस्टेट प्रदाता