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

Socket.io में RedisStore का उपयोग करने के उदाहरण

<ब्लॉकक्वॉट>

लेकिन मुझे समझ में नहीं आता कि उस कोड में RedisStore का उपयोग मेमोरीस्टोर का उपयोग करने से कैसे अलग होगा। क्या कोई मुझे यह समझा सकता है?

अंतर यह है कि डिफ़ॉल्ट MemoryStore . का उपयोग करते समय , कोई भी संदेश जो आप किसी कार्यकर्ता में छोड़ते हैं, केवल उसी कार्यकर्ता से जुड़े ग्राहकों को भेजा जाएगा, क्योंकि श्रमिकों के बीच कोई आईपीसी नहीं है। RedisStore का उपयोग करना , आपका संदेश एक रेडिस सर्वर पर प्रकाशित किया जाएगा, जिसे आपके सभी कर्मचारी सदस्यता ले रहे हैं। इस प्रकार, संदेश को सभी कर्मचारियों और सभी जुड़े ग्राहकों द्वारा उठाया और प्रसारित किया जाएगा।

<ब्लॉकक्वॉट>

इसके अलावा, रिडिस्टोर का उपयोग करने के लिए सॉकेट.आईओ को कॉन्फ़िगर करने के बीच क्या अंतर है बनाम अपना खुद का रेडिस क्लाइंट बनाना और अपना डेटा सेट/प्राप्त करना?

मैं RedisStore से अच्छी तरह परिचित नहीं हूं , और इसलिए मैं सभी अंतरों के बारे में निश्चित नहीं हूं। लेकिन इसे स्वयं करना पूरी तरह से मान्य अभ्यास होगा। उस स्थिति में, आप सभी संदेशों को रेडिस सर्वर पर प्रकाशित कर सकते हैं, और अपने सॉकेट हैंडलर में उनको सुन सकते हैं। यह शायद आपके लिए अधिक काम का होगा, लेकिन आप इसे कैसे सेट अप करना चाहते हैं, इस पर भी आपका अधिक नियंत्रण होगा। मैंने खुद भी कुछ ऐसा ही किया है:

// Publishing a message somewhere
var pub = redis.createClient();
pub.publish("messages", JSON.stringify({type: "foo", content: "bar"}));

// Socket handler
io.sockets.on("connection", function(socket) {
  var sub = redis.createClient();
  sub.subscribe("messages");
  sub.on("message", function(channel, message) {
    socket.send(message);
  });

  socket.on("disconnect", function() {
    sub.unsubscribe("messages");
    sub.quit();
  });
});

इसका मतलब यह भी है कि आपको अधिक उन्नत संदेश रूटिंग का ध्यान रखना होगा, उदाहरण के लिए विभिन्न चैनलों को प्रकाशित/सब्सक्राइब करके। RedisStore . के साथ , आपको socket.io चैनल (io.sockets.of("channel").emit(...) का उपयोग करके वह कार्यक्षमता मुफ्त में मिलती है। )।

इसके साथ एक संभावित बड़ी कमी यह है कि सॉकेट.आईओ सत्र श्रमिकों के बीच साझा नहीं किए जाते हैं। यदि आप किसी भी लंबे मतदान वाले परिवहन का उपयोग करते हैं तो इसका मतलब शायद समस्या होगी।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. स्प्रिंग-डेटा-रेडिस रेडिस टेम्पलेट अपवाद

  2. redis dump.rdb / छोटी फ़ाइलों को सहेजना

  3. रेडिस - कस्टम रूपांतरण कैसे कॉन्फ़िगर करें

  4. हरोकू सीडर स्टैक पर रेस्क्यू कार्यकर्ता के समाप्त होने के बाद भी वर्कर काउंट मौजूद है

  5. Azure Redis कैश - GET कॉल पर टाइमआउट