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

रेडिस पब/सब ऑन रेल्स

Redis#subscribe का कार्यान्वयन एक लूप है जो घटनाओं को सुनने के लिए वर्तमान धागे का नियंत्रण ग्रहण करेगा। इसका मतलब है कि आपके द्वारा दिखाए गए तरीके से रेल वर्ग के संदर्भ में सदस्यता छोड़ते समय बूट प्रक्रिया रोक दी जाती है।

आप कॉल को थ्रेड में लपेटने का प्रयास कर सकते हैं, लेकिन जब भी यह वर्ग एक नई प्रक्रिया में लोड होता है, जैसे रेल कंसोल या एकाधिक यूनिकॉर्न, तो यह दृष्टिकोण सचमुच एक नई सदस्यता तैयार करेगा। साथ ही, आपको साझा स्थिति और अन्य थ्रेडिंग मुद्दों के बारे में सावधान रहना होगा। शायद यही वह नहीं है जो आप चाहते हैं।

आप एक अलग प्रक्रिया शुरू करने के लिए सबसे अच्छे हैं जो रेल पर्यावरण को लोड करता है और वेब अनुरोधों की सेवा करने वाली प्रक्रिया से अलग रेडिस की सदस्यता लेता है। यह निम्न की तरह एक रेक कार्य हो सकता है:

namespace :subscribe do
  task :redis => :environment do
    $redis.subscribe("bravo") do |on|
      on.message do |channel, message|
        Rails.logger.info("Broadcast on channel #{channel}: #{message}")
        OtherClass.some_method # yada yada
      end
    end
  end
end



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. रेडिस-क्ली को 127.0.0.1 पर पुनर्निर्देशित किया गया

  2. 10.XX.XX.28:6379 पर रेडिस से कनेक्ट नहीं हो सका:अज्ञात त्रुटि - स्प्रिंग बैच या विंडोज़ मशीन से एक्सेस करते समय

  3. एक्सपायर टाइम एक्सप्रेस और रेडिस सेशन

  4. रेडिस को कैसे पता चलेगा कि उसे कैश्ड डेटा या डीबी से ताजा डेटा वापस करना है?

  5. आप मूल्य के साथ चाबियों की खोज कैसे करते हैं? उदाहरण के लिए सभी कुंजी प्राप्त करें जहां मान कुछ मूल्य है