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

Jedis के साथ Redis Pub/Sub कार्यान्वित करें: चरण-दर-चरण गाइड

Jedis लाइब्रेरी

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

Redis Pub/Sub सिस्टम

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

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

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

<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.0.1</version> </dependency>

Jedis लाइब्रेरी के नवीनतम संस्करण के लिए, इस पेज को चेक करें।

Redis इंस्टॉलेशन

आपको Redis का नवीनतम संस्करण इंस्टॉल करना होगा। Redis इंस्टॉल करने के बारे में अधिक जानकारी के लिए इस पेज को चेक करें।

Jedis कनेक्शन

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

Jedis jedis = new Jedis();

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

चैनल्स को सब्सक्राइब करें

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

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPubSub;

public class ChannelSubscribe {
    public static void main(String[] args) {
        Jedis jedis = null;
        try {
            /* Redis सर्वर से कनेक्ट करने के लिए Jedis ऑब्जेक्ट बनाना */
            jedis = new Jedis();
            /* चैनल्स को सब्सक्राइब करने के लिए JedisPubSub ऑब्जेक्ट बनाना */
            JedisPubSub jedisPubSub = new JedisPubSub() {
                @Override
                public void onMessage(String channel, String message) {
                    System.out.println("Channel " + channel + " has sent a message : " + message );
                    if(channel.equals("C1")) {
                        /* पहला मैसेज प्राप्त होने के बाद चैनल C1 से अनसब्सक्राइब करें। */
                        unsubscribe(channel);
                    }
                }
                @Override
                public void onSubscribe(String channel, int subscribedChannels) {
                    System.out.println("Client is Subscribed to channel : "+ channel);
                    System.out.println("Client is Subscribed to "+ subscribedChannels + " no. of channels");
                }
                @Override
                public void onUnsubscribe(String channel, int subscribedChannels) {
                    System.out.println("Client is Unsubscribed from channel : "+ channel);
                    System.out.println("Client is Subscribed to "+ subscribedChannels + " no. of channels");
                }
            };
            /* चैनल C1 और C2 को सब्सक्राइब करना */
            jedis.subscribe(jedisPubSub, "C1", "C2");
        } catch(Exception ex) {
            System.out.println("Exception : " + ex.getMessage());
        } finally {
            if(jedis != null) {
                jedis.close();
            }
        }
    }
}

आउटपुट

जब आप "ChannelSubscribe" क्लास चलाते हैं, तो आउटपुट निम्न होगा:

Jedis के साथ Redis Pub/Sub कार्यान्वित करें: चरण-दर-चरण गाइड

चैनल्स पर पब्लिश करें

"ChannelPublish" नामक एक क्लास बनाएं, यह क्लास Jedis कनेक्शन का उपयोग करके Redis सर्वर से कनेक्ट होगी और चैनल C1 और C2 पर दो-दो मैसेज पब्लिश करेगी।

import redis.clients.jedis.Jedis;

public class ChannelPublish {
    public static void main(String[] args) {
        Jedis jedis = null;
        try {
            /* Redis सर्वर से कनेक्ट करने के लिए Jedis ऑब्जेक्ट बनाना */
            jedis = new Jedis();
            /* चैनल C1 पर मैसेज पब्लिश करना */
            jedis.publish("C1", "First message to channel C1");
            /* चैनल C2 पर मैसेज पब्लिश करना */
            jedis.publish("C2", "First message to channel C2");
            /* चैनल C1 पर मैसेज पब्लिश करना */
            jedis.publish("C1", "Second message to channel C1");
            /* चैनल C2 पर मैसेज पब्लिश करना */
            jedis.publish("C2", "Second message to channel C2");
        } catch(Exception ex) {
            System.out.println("Exception : " + ex.getMessage());
        } finally {
            if(jedis != null) {
                jedis.close();
            }
        }
    }
}

आउटपुट

जब आप "ChannelPublish" क्लास चलाते हैं, तो ChannelSubscribe कंसोल में आउटपुट निम्न होगा:

Jedis के साथ Redis Pub/Sub कार्यान्वित करें: चरण-दर-चरण गाइड

पैटर्न्स को सब्सक्राइब करें

"PatternSubscribe" नामक एक क्लास बनाएं, यह क्लास एक क्लाइंट बनाकर पैटर्न C* और D? को सब्सक्राइब करेगी।

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPubSub;

public class PatternSubscribe {
    public static void main(String[] args) {
        Jedis jedis = null;
        try {
            /* Redis सर्वर से कनेक्ट करने के लिए Jedis ऑब्जेक्ट बनाना */
            jedis = new Jedis();
            /* चैनल्स को सब्सक्राइब करने के लिए JedisPubSub ऑब्जेक्ट बनाना */
            JedisPubSub jedisPubSub = new JedisPubSub() {
                @Override
                public void onPMessage(String pattern, String channel, String message) {
                    System.out.println("Channel " +channel+ " has sent a message : " +message+ " on pattern " + pattern);
                    if(pattern.equals("C*")) {
                        /* पहला मैसेज प्राप्त होने के बाद पैटर्न C* से अनसब्सक्राइब करें। */
                        punsubscribe(pattern);
                    }
                }
                @Override
                public void onPSubscribe(String pattern, int subscribedChannels) {
                    System.out.println("Client is Subscribed to pattern : "+ pattern);
                    System.out.println("Client is Subscribed to "+ subscribedChannels + " no. of patterns");
                }
                @Override
                public void onPUnsubscribe(String pattern, int subscribedChannels) {
                    System.out.println("Client is Unsubscribed from pattern : "+ pattern);
                    System.out.println("Client is Subscribed to "+ subscribedChannels + " no. of patterns");
                }
            };
            /* चैनल C1 और C2 को सब्सक्राइब करना */
            jedis.psubscribe(jedisPubSub, "C*", "D?");
        } catch(Exception ex) {
            System.out.println("Exception : " + ex.getMessage());
        } finally {
            if(jedis != null) {
                jedis.close();
            }
        }
    }
}

आउटपुट

जब आप "PatternSubscribe" क्लास चलाते हैं, तो आउटपुट निम्न होगा:

Jedis के साथ Redis Pub/Sub कार्यान्वित करें: चरण-दर-चरण गाइड

पैटर्न्स पर पब्लिश करें

"PatternPublish" नामक एक क्लास बनाएं, यह क्लास Jedis कनेक्शन का उपयोग करके Redis सर्वर से कनेक्ट होगी और चैनल C13, D2, C134, और D3 पर मैसेजेस पब्लिश करेगी।

import redis.clients.jedis.Jedis;

public class PatternPublish {
    public static void main(String[] args) {
        Jedis jedis = null;
        try {
            /* Redis सर्वर से कनेक्ट करने के लिए Jedis ऑब्जेक्ट बनाना */
            jedis = new Jedis();
            /* चैनल C13 पर मैसेज पब्लिश करना */
            jedis.publish("C13", "Message to channel C13");
            /* चैनल D2 पर मैसेज पब्लिश करना */
            jedis.publish("D2", "Message to channel D2");
            /* चैनल C134 पर मैसेज पब्लिश करना */
            jedis.publish("C134", "Message to channel C134");
            /* चैनल D3 पर मैसेज पब्लिश करना */
            jedis.publish("D3", "Message to channel D3");
        } catch(Exception ex) {
            System.out.println("Exception : " + ex.getMessage());
        } finally {
            if(jedis != null) {
                jedis.close();
            }
        }
    }
}

आउटपुट

जब आप "PatternPublish" क्लास चलाते हैं, तो PatternSubscribe कंसोल में आउटपुट निम्न होगा:

Jedis के साथ Redis Pub/Sub कार्यान्वित करें: चरण-दर-चरण गाइड

संदर्भ:

  1. Pub Sub कमांड डॉक्स

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

  1. Redis UNSUBSCRIBE में मास्टर करें: एकाधिक चैनल्स से कुशलता से अनसब्सक्राइब करें Redis UNSUBSCRIBE में मास्टर करें: एकाधिक चैनल्स से कुशलता से अनसब्सक्राइब करें

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

  1. Redis PUBLISH में मास्टर करें: Redis Pub/Sub के साथ मैसेज पब्लिश करना समझाया गया Redis PUBLISH में मास्टर करें: Redis Pub/Sub के साथ मैसेज पब्लिश करना समझाया गया

    PUBLISH कमांड PUBLISH कमांड का उपयोग Redis मैसेज ब्रोकर में निर्दिष्ट चैनल पर मैसेज पब्लिश करने के लिए किया जाता है। यह उन सब्सक्राइबर्स की संख्या लौटाता है जिन्होंने मैसेज प्राप्त किया है। Redis PUBLISH कमांड का सिंटैक्स निम्न है: सिंटैक्स: redis host:port> PUBLISH <channel> <message&g

  1. Redis Pub/Sub में मास्टर करें: Redis-CLI के साथ एकाधिक चैनल्स सब्सक्राइब करें Redis Pub/Sub में मास्टर करें: Redis-CLI के साथ एकाधिक चैनल्स सब्सक्राइब करें

    SUBSCRIBE कमांड SUBSCRIBE कमांड का उपयोग Redis मैसेज ब्रोकर सिस्टम में क्लाइंट को एक या अधिक निर्दिष्ट चैनल्स को सब्सक्राइब करने के लिए किया जाता है। एक बार जब क्लाइंट SUBSCRIBE कमांड निष्पादित करता है, तो यह सब्सक्राइब्ड स्टेट में प्रवेश करता है जहां यह सब्सक्राइब्ड चैनल्स को सुनता है। अन्य क्लाइंट