2011-10-05 20 views
17

किसी वेब एप्लिकेशन में, यदि मुझे किसी कतार में कोई ईवेंट लिखना है, तो मैं ईवेंट लिखने के लिए रेडिस से कनेक्शन बनाउंगा।क्या रेडिस पब/उप मॉडल को लगातार कनेक्शन के लिए लगातार कनेक्शन की आवश्यकता होती है?

अब अगर मैं रेडिस में घटना के प्रकाशन को संसाधित करने या प्रतिक्रिया करने के लिए एक और बैकएंड प्रक्रिया (एक डेमन या क्रॉन नौकरी कहूं) चाहता हूं, तो क्या मुझे लगातार कनेक्शन की आवश्यकता है?

लिटिल कैसे इस पब/उप प्रक्रिया एक वेब अनुप्रयोग में काम करता है पर उलझन में।

+0

पर उपलब्ध है कुछ सरल (1 लाइन पैच) विचार Redis में मूल रूप से PubSub के लिए दृढ़ता जोड़ने के लिए - http://abhinavsingh.com/customizing-redis-pubsub-for-message-persistence-part-2/ –

उत्तर

2

मैं पूरी तरह यकीन नहीं है, लेकिन मुझे विश्वास है कि हाँ, पब/उप एक लगातार कनेक्शन की आवश्यकता है।

एक विकल्प के लिए मैं resque पर एक नज़र ले जाएगा और यह कैसे है कि संभालती है। पब/सब का उपयोग करने के बजाय यह केवल एक आइटम को रेडिस में एक सूची में जोड़ता है, और फिर आपके पास जो भी डिमन या क्रॉन जॉब है, वह पहले प्राप्त करने के लिए lpop कमांड का उपयोग कर सकता है।

केवल एक छद्म जवाब और फिर एक प्लग देने के लिए क्षमा करें।

42
Redis में मूल रूप से

दो अलग-अलग संदेश सेवा मॉडल हैं:

  • आग और/एक कई करने के लिए भूल जाओ: Pub/Sub। उस समय एक संदेश प्रकाशित है- सभी ग्राहकों को यह प्राप्त होगा, लेकिन यह संदेश हमेशा के लिए खो जाता है। यदि किसी ग्राहक की सदस्यता नहीं ली गई है तो उसे वापस पाने का कोई तरीका नहीं है।
  • बने कतार/एक करने के लिए एक: सूचियाँ, संभवतः इस तरह BLPOP के रूप में अवरुद्ध आदेशों के साथ इस्तेमाल किया। सूचियों के साथ आपके पास एक निर्माता है जो एक सूची में धक्का दे रहा है, और एक या कई उपभोक्ता तत्वों की प्रतीक्षा कर रहे हैं, लेकिन एक संदेश प्रतीक्षा ग्राहकों में से केवल एक तक पहुंच जाएगा। सूचियों के साथ आपके पास दृढ़ता है, और संदेश गायब होने की बजाय क्लाइंट को पॉप करने के लिए प्रतीक्षा करेंगे। तो अगर कोई भी सुन नहीं रहा है तो बैकलॉग भी है (आपकी उपलब्ध स्मृति जितनी बड़ी है, या आप एलटीआरआईएमएम का उपयोग करके बैकलॉग को सीमित कर सकते हैं)।

मुझे आशा है कि यह स्पष्ट है। मैं तुम्हें Redis और संदेश अर्थ विज्ञान के बारे में अधिक समझने के लिए निम्न कमांड का अध्ययन कर सुझाव देते हैं:

  • LPUSH/RPUSH, RPOP/LPOP, BRPOP/BLPOP
  • प्रकाशित, सदस्यता, इस के लिए PSUBSCRIBE

डॉक्टर आदेश redis.io

+0

तो मुझे एक ग्राहक के रूप में लगातार कनेक्शन की आवश्यकता है? – codecompleting

+5

पब/उप के साथ, हां। एक उदाहरण के लिए [यह] देखें (http://blog.joshsoftware.com/2011/01/03/do-you-need-a-push-notification-manager-redis-pubsub-to-the-rescue/) पब/सब और कस्टम रूबी क्लाइंट के साथ लगातार संदेश कैसे प्राप्त करें। – cbrauchli

संबंधित मुद्दे