Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Redis

रेडिस जेडिस पब उप- जेडिस लाइब्रेरी का उपयोग करके पब/सब सिस्टम को कैसे कार्यान्वित करें

इस ट्यूटोरियल में, हम सीखेंगे कि जेडिस लाइब्रेरी का उपयोग करके रेडिस पब सब सिस्टम को कैसे लागू किया जाए।

जेडिस लाइब्रेरी

जेडिस रेडिस डेटास्टोर के लिए जावा क्लाइंट लाइब्रेरी है। यह छोटा और उपयोग करने में बहुत आसान है, और रेडिस 2.8.x, 3.x.x और ऊपर के डेटास्टोर के साथ पूरी तरह से संगत है। आप यहां जेडिस लाइब्रेरी के बारे में अधिक जानकारी प्राप्त कर सकते हैं।

रेडिस पब/सब सिस्टम

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

प्रोजेक्ट सेटअप

अपने पसंदीदा IDE में एक साधारण मावेन प्रोजेक्ट बनाएं और अपने pom.xml में नीचे दी गई निर्भरता को जोड़ें फ़ाइल।

<निर्भरता>  redis.clients  jedis  <संस्करण>3.0.1

जेडिस पुस्तकालय के नवीनतम संस्करण के लिए, इस पृष्ठ को देखें।

रेडिस इंस्टालेशन

आपको रेडिस का नवीनतम संस्करण स्थापित करना होगा। रेडिस स्थापित करने के बारे में अधिक जानकारी के लिए इस पृष्ठ को देखें।

जेडिस कनेक्शन

जेडिस . का ऑब्जेक्ट बनाएं ( redis.clients.jedis.Jedis ) अपने जावा कोड को रेडिस से जोड़ने के लिए कक्षा।

जेडिस जेडिस =न्यू जेडिस ();

यदि आपने अपनी स्थानीय मशीन और डिफ़ॉल्ट पोर्ट (6379) में एक रेडिस सेवा शुरू की है, तो डिफ़ॉल्ट कंस्ट्रक्टर ठीक काम करेगा। अन्यथा आपको सही होस्ट यूआरएल और पोर्ट नंबर पास करना होगा। कंस्ट्रक्टर में एक तर्क के रूप में।

चैनलों की सदस्यता लें

एक वर्ग बनाएं “चैनल की सदस्यता लें” , यह वर्ग क्लाइंट बनाकर चैनल C1 और C2 की सदस्यता लेगा। इस क्लाइंट को एक संदेश प्राप्त होगा, जब कोई अन्य क्लाइंट चैनल C1 या चैनल C2 पर संदेश प्रकाशित करेगा।

आयात redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPubSub;पब्लिक क्लास चैनलसब्सक्राइब {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) { Jedis jedis =null; कोशिश करें {/* रेडिस सर्वर से जुड़ने के लिए जेडिस ऑब्जेक्ट बनाना */ जेडिस =नया जेडिस (); /* चैनलों के साथ सदस्यता लेने के लिए JedisPubSub ऑब्जेक्ट बनाना */ JedisPubSub jedisPubSub =new JedisPubSub() {@Override public void onMessage(String channel, String message) { System.out.println("Channel" + channel + " ने एक संदेश भेजा है:"+ संदेश); if(channel.equals("C1")) {/* पहला मैसेज मिलने के बाद चैनल C1 से अनसब्सक्राइब करें। * / सदस्यता समाप्त करें (चैनल); } } @Override public void onSubscribe(String channel, int subscribedChannels) { System.out.println("Client is Subscribe to channel :"+ channel); System.out.println ("क्लाइंट ने सब्सक्राइब किया है" + सब्सक्राइब्ड चैनल + "चैनलों की संख्या"); } @अनसब्सक्राइब पर सार्वजनिक शून्य को ओवरराइड करें (स्ट्रिंग चैनल, int subscribedChannels) { System.out.println ("क्लाइंट चैनल से अनसब्सक्राइब किया गया है:" + चैनल); System.out.println ("क्लाइंट ने सब्सक्राइब किया है" + सब्सक्राइब्ड चैनल + "चैनलों की संख्या"); } }; /* चैनल C1 और C2 की सदस्यता लेना */ jedis.subscribe(jedisPubSub, "C1", "C2"); } पकड़ (अपवाद पूर्व) { System.out.println ("अपवाद:" + ex.getMessage ()); } अंत में { अगर (जेडिस! =शून्य) { jedis.close (); } } }}

आउटपुट

जब आप कक्षा चलाते हैं “चैनल की सदस्यता लें” , आउटपुट निम्न होगा :- 

रेडिस जेडिस पब उप- जेडिस लाइब्रेरी का उपयोग करके पब/सब सिस्टम को कैसे कार्यान्वित करें




चैनलों पर प्रकाशित करें

एक वर्ग बनाएं “चैनल प्रकाशित करें” , यह वर्ग जेडिस कनेक्शन का उपयोग करके रेडिस सर्वर से कनेक्ट होगा और चैनल C1 और C2 में से प्रत्येक में दो संदेश प्रकाशित करेगा।

आयात करें कोशिश करें {/* रेडिस सर्वर से जुड़ने के लिए जेडिस ऑब्जेक्ट बनाना */ जेडिस =नया जेडिस (); /* चैनल C1 को संदेश प्रकाशित करना */ jedis.publish("C1", "C1 चैनल को पहला संदेश"); /* चैनल C2 को संदेश प्रकाशित करना */ jedis.publish("C2", "C2 चैनल को पहला संदेश"); /* चैनल C1 को संदेश प्रकाशित करना */ jedis.publish ("C1", "चैनल C1 को दूसरा संदेश"); /* चैनल C2 को संदेश प्रकाशित करना */ jedis.publish("C2", "दूसरा संदेश चैनल C2 को"); } पकड़ (अपवाद पूर्व) { System.out.println ("अपवाद:" + ex.getMessage ()); } अंत में { अगर (जेडिस! =शून्य) { jedis.close (); } } }}

आउटपुट

जब आप कक्षा चलाते हैं “चैनल प्रकाशित करें” , चैनल की सदस्यता लें . में आउटपुट कंसोल निम्न होगा:-

रेडिस जेडिस पब उप- जेडिस लाइब्रेरी का उपयोग करके पब/सब सिस्टम को कैसे कार्यान्वित करें

पैटर्न की सदस्यता लें

एक वर्ग बनाएं “पैटर्न सदस्यता लें” , यह वर्ग पैटर्न C* और D की सदस्यता लेगा? क्लाइंट बनाकर।

आयात redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPubSub;public class PatternSubscribe { public static void main(String[] args) { Jedis jedis =null; कोशिश करें {/* रेडिस सर्वर से जुड़ने के लिए जेडिस ऑब्जेक्ट बनाना */ जेडिस =नया जेडिस (); /* चैनलों के साथ सदस्यता लेने के लिए JedisPubSub ऑब्जेक्ट बनाना */ JedisPubSub jedisPubSub =new JedisPubSub() {@Override public void onPMessage(String pattern, String channel, String message) { System.out.println("Channel" +channel+ " ने एक भेजा है संदेश:"+संदेश+" पैटर्न पर "+ पैटर्न); if(pattern.equals("C*")) {/* पहला संदेश प्राप्त होने के बाद पैटर्न C* से अनसब्सक्राइब करें। */ पनसब्सक्राइब (पैटर्न); } } @Override public void onPSsubscribe(String pattern, int subscribedChannels) { System.out.println ("क्लाइंट पैटर्न के लिए सब्सक्राइब किया गया है:" + पैटर्न); System.out.println ("क्लाइंट को सब्सक्राइब किया गया है" + सब्सक्राइब किए गए चैनल + "पैटर्न की संख्या"); } @Override public void onPUnsubscribe(String pattern, int subscribedChannels) { System.out.println ("क्लाइंट पैटर्न से अनसब्सक्राइब है:"+ पैटर्न); System.out.println ("क्लाइंट को सब्सक्राइब किया गया है" + सब्सक्राइब किए गए चैनल + "पैटर्न की संख्या"); } }; /* चैनल C1 और C2 की सदस्यता लेना */ jedis.psubscribe(jedisPubSub, "C*", "D?"); } पकड़ (अपवाद पूर्व) { System.out.println ("अपवाद:" + ex.getMessage ()); } अंत में { अगर (जेडिस! =शून्य) { jedis.close (); } } }}

आउटपुट

जब आप कक्षा चलाते हैं “पैटर्न सदस्यता लें” , आउटपुट निम्न होगा :- 

रेडिस जेडिस पब उप- जेडिस लाइब्रेरी का उपयोग करके पब/सब सिस्टम को कैसे कार्यान्वित करें




पैटर्न में प्रकाशित करें

एक वर्ग बनाएं “पैटर्नप्रकाशित करें” , यह वर्ग जेडिस कनेक्शन का उपयोग करके रेडिस सर्वर से कनेक्ट होगा और चैनल C13, D2, C134, और D3 पर संदेश प्रकाशित करेगा।

आयात करें कोशिश करें {/* रेडिस सर्वर से जुड़ने के लिए जेडिस ऑब्जेक्ट बनाना */ जेडिस =नया जेडिस (); /* चैनल C13 को संदेश प्रकाशित करना */ jedis.publish ("C13", "चैनल C13 को संदेश"); /* चैनल D2 को संदेश प्रकाशित करना */ jedis.publish("D2", "Message to channel D2"); /* चैनल C134 को संदेश प्रकाशित करना */ jedis.publish ("C134", "चैनल C134 को संदेश"); /* चैनल D3 को संदेश प्रकाशित करना */ jedis.publish("D3", "चैनल D3 को संदेश"); } पकड़ (अपवाद पूर्व) { System.out.println ("अपवाद:" + ex.getMessage ()); } अंत में { अगर (जेडिस! =शून्य) { jedis.close (); } } } }

आउटपुट

जब आप एक कक्षा चलाते हैं “PatternPublish” , PatternSubscribe . में आउटपुट कंसोल निम्न होगा :-

रेडिस जेडिस पब उप- जेडिस लाइब्रेरी का उपयोग करके पब/सब सिस्टम को कैसे कार्यान्वित करें

संदर्भ :-

  1. पब सब कमांड डॉक्स

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

 
  1. रेडिस अनसब्सक्राइब - रेडिस पब/सब . में एकाधिक चैनलों से सदस्यता कैसे समाप्त करें

    इस ट्यूटोरियल में, हम सीखेंगे कि रेडिस-क्ली का उपयोग करके रेडिस मैसेज ब्रोकर सिस्टम में कई चैनलों से कैसे अनसब्सक्राइब किया जाए। अनसब्सक्राइब कमांड UNSUBSCRIBE कमांड का उपयोग क्लाइंट को रेडिस मैसेज ब्रोकर सिस्टम में एक या अधिक निर्दिष्ट चैनलों से सदस्यता समाप्त करने के लिए किया जाता है। यदि कोई चै

  1. रेडिस पब्लिश - रेडिस पब / सब में एक संदेश कैसे प्रकाशित करें

    इस ट्यूटोरियल में, हम सीखेंगे कि रेडिस-क्ली का उपयोग करके रेडिस मैसेज ब्रोकर सिस्टम में एक संदेश कैसे प्रकाशित किया जाए। आदेश प्रकाशित करें PUBLISH कमांड का उपयोग संदेश को रेडिस मैसेज ब्रोकर में एक निर्दिष्ट चैनल पर प्रकाशित करने के लिए किया जाता है। यह संदेश प्राप्त करने वाले ग्राहक की संख्या लौट

  1. Redis SUBSCRIBE - रेडिस पब/सब में कई चैनलों की सदस्यता कैसे लें

    इस ट्यूटोरियल में, हम सीखेंगे कि रेडिस-क्ली का उपयोग करके रेडिस मैसेज ब्रोकर सिस्टम में कई चैनलों की सदस्यता कैसे लें। सब्सक्राइब कमांड SUBSCRIBE कमांड का उपयोग क्लाइंट को रेडिस मैसेज ब्रोकर सिस्टम में एक या अधिक निर्दिष्ट चैनलों को सब्सक्राइब करने के लिए किया जाता है। एक बार जब क्लाइंट सब्सक्राइब