2012-02-28 8 views
9

मेरे पास एक प्रोग्राम है, जो रेडिस डेटास्टोर से एक निश्चित कुंजी पर मतदान करेगा, और जब कुछ निश्चित स्थिति को पूरा करता है तो कुछ करें।रेडिस डेटास्टोर के लिए "ट्रिगर" कैसे कार्यान्वित करें?

हालांकि, मुझे लगता है कि समय-समय पर रेडिस पर मतदान काफी अक्षम है, मैं सोच रहा हूं कि लाल रंग के लिए "ट्रिगर" तंत्र है, जब मूल्य बदलता है और स्थिति को पूरा करता है, तो ट्रिगर को बुलाया जाएगा। ट्रिगर एक आरपीसी फ़ंक्शन, या एक HTTP संदेश, या कुछ और हो सकता है, ताकि मुझे मतदान और बाधा के बीच अंतर की तरह इसे और भी मतदान करने की आवश्यकता न हो।

क्या यह संभव है?

उत्तर

13

आप रेडिस की Pub/Sub सुविधा का उपयोग कर सकते हैं। जैसा कि आपने वर्णन किया है, वही है जो आपको अपनी परिस्थितियों को दी गई है।

अनिवार्य रूप से, आप SUBSCRIBE "चैनल" में, और आपके आवेदन के दूसरे भाग को लिखते हैं (PUBLISH) उस चैनल में मूल्य बदल दिया जा रहा है। आपका ग्राहक (उपभोक्ता, ग्राहक जो परिवर्तन के बारे में जानना चाहता है) को लगभग वास्तविक समय में अधिसूचित किया जाएगा।

+1

आपके उत्तर के लिए धन्यवाद। मैंने रेडिस की पब/सब फीचर के प्रलेखन को पढ़ा है, लेकिन फिर भी यह समझ में नहीं आता कि मूल्य बदलते समय ट्रिगर कैसे करें। "पब" कार्रवाई कौन करेगा? मूल्य पर मतदान के बिना, "पब" कार्रवाई को कैसे ट्रिगर करें? – ciphor

+0

क्लाइंट जो मान लिख रहा है उसे प्रकाशित करना चाहिए कि मान बदल गए हैं। –

+0

@ciphor अगर मैं आपका प्रश्न समझता हूं, तो विचार आपके एप्लिकेशन तर्क को बदलना है, इसलिए "सादा" रेडिस कुंजी पर अपना मान लिखने के बजाय (या इसके अलावा), आप इसे चैनल पर लिखते हैं, ताकि प्रत्येक ग्राहक (निश्चित रूप से एक हो सकता है) तुरंत सूचित किया जाता है। –

0

यदि आप पब/सब का उपयोग कर सकते हैं, तो यह सबसे अच्छा है। अगर किसी कारण से काम नहीं करता है, तो आप (प्रदर्शन-प्रभावकारी) MONITOR कमांड का भी उपयोग कर सकते हैं, जो आपको सर्वर द्वारा प्राप्त हर आदेश भेज देगा। शायद यह एक अच्छा विचार नहीं है।

विशिष्ट रूप से सूचियों के लिए, आपके पास BLPOP है, जो एक सूची से पॉप के लिए एक नई वस्तु उपलब्ध होने तक कनेक्शन को अवरुद्ध कर देगा।

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