Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) · पाठ

रियल-टाइम चैट डिज़ाइन करना

संदेश वितरण के लिए प्रकाशन/सदस्यता का प्रदर्शन करने वाला एक बुनियादी रियल-टाइम चैट अनुप्रयोग लागू कीजिए।

पाठ 2, कुल 4 में से11 चरण

रियल-टाइम चैट डिज़ाइन करना, CoddyKit पर Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

Pub/Sub के साथ रीयल-टाइम चैट

कल्पना कीजिए कि आप ऐसा चैट अनुप्रयोग बना रहे हैं जिसमें संदेश तुरंत दिखाई देते हैं! यहीं Redis Pub/Sub अपनी उपयोगिता दिखाता है। लगातार नए संदेशों की जाँच किए बिना रीयल-टाइम संचार के लिए यह बिल्कुल उपयुक्त है।

इस पाठ में आप Redis Publish/Subscribe का उपयोग करके एक मूल चैट प्रणाली का डिज़ाइन बनाना सीखेंगे, जिसमें चैट रूम को चैनलों और संदेशों को प्रकाशित घटनाओं में बदला जाएगा।

Redis चैनलों के रूप में चैट रूम

Pub/Sub के साथ चैट अनुप्रयोग का मूल विचार सरल है: प्रत्येक चैट रूम एक अद्वितीय Redis चैनल से जुड़ा होता है।

  • जब कोई उपयोगकर्ता किसी चैट रूम (जैसे, 'general' या 'support') में शामिल होना चाहता है, तो उसका क्लाइंट अनुप्रयोग संबंधित Redis चैनल को subscribe करेगा।
  • जब उपयोगकर्ता उस रूम में संदेश भेजता है, तो उसका क्लाइंट उस संदेश को उसी विशिष्ट चैनल पर publish करेगा।

किसी रूम में शामिल होने के लिए सदस्यता लेना

किसी चैट रूम में शामिल होने के लिए क्लाइंट को उसके चैनल पर संदेशों को सुनना शुरू करना होता है। यह subscribe करके किया जाता है। सदस्यता लेने के बाद क्लाइंट को उस चैनल पर प्रकाशित सभी संदेश प्राप्त होंगे।

नीचे chat:general नामक चैनल की सदस्यता लेने का एक सरल Java उदाहरण दिया गया है, जिसमें Redis क्लाइंट लाइब्रेरी (जैसे Jedis) का उपयोग किया गया है।

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

public class ChatSubscriber {
  public static void main(String[] args) {
    try (Jedis jedis = new Jedis("localhost")) {
      System.out.println("Subscribing to chat:general...");
      jedis.subscribe(new JedisPubSub() {
        @Override
        public void onMessage(String channel, String message) {
          System.out.println("Received on " + channel + ": " + message);
        }
      }, "chat:general");
    } catch (Exception e) {
      System.err.println("Error: " + e.getMessage());
    }
  }
}

संदेश भेजने के लिए प्रकाशित करना

जब कोई उपयोगकर्ता संदेश लिखकर 'भेजें' दबाता है, तो उसका क्लाइंट अनुप्रयोग उस संदेश को वर्तमान चैट रूम से संबंधित चैनल पर publish करेगा। उस चैनल की सदस्यता लिए हुए सभी क्लाइंट को संदेश तुरंत प्राप्त हो जाएगा।

यह Java उदाहरण दिखाता है कि कोई क्लाइंट chat:general चैनल पर संदेश कैसे प्रकाशित करेगा।

import redis.clients.jedis.Jedis;

public class ChatPublisher {
  public static void main(String[] args) {
    try (Jedis jedis = new Jedis("localhost")) {
      String message = "Hello, everyone!";
      jedis.publish("chat:general", message);
      System.out.println("Published: '" + message + "'");
    } catch (Exception e) {
      System.err.println("Error: " + e.getMessage());
    }
  }
}

डेमो: उपयोगकर्ता A सुनता है

आइए इसे काम करते हुए देखते हैं! इस प्रोग्राम को एक टर्मिनल में चलाइए। यह chat:general रूम में शामिल होकर संदेशों की प्रतीक्षा कर रहे उपयोगकर्ता A का अनुकरण करता है। प्रोग्राम रुका रहेगा और प्राप्त होने वाले हर संदेश को प्रिंट करेगा।

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

public class UserA {
  public static void main(String[] args) {
    try (Jedis jedis = new Jedis("localhost")) {
      System.out.println("User A is listening on chat:general...");
      jedis.subscribe(new JedisPubSub() {
        @Override
        public void onMessage(String channel, String message) {
          System.out.println("User A received: " + message);
        }
      }, "chat:general");
    } catch (Exception e) {
      System.err.println("Error: " + e.getMessage());
    }
  }
}

डेमो: उपयोगकर्ता B भेजता है

अब एक अलग टर्मिनल खोलकर इस प्रोग्राम को चलाइए। यह chat:general रूम में संदेश भेज रहे उपयोगकर्ता B का अनुकरण करता है। उपयोगकर्ता A का टर्मिनल देखिए—उसे उपयोगकर्ता B का संदेश तुरंत प्राप्त हो जाना चाहिए!

import redis.clients.jedis.Jedis;

public class UserB {
  public static void main(String[] args) {
    try (Jedis jedis = new Jedis("localhost")) {
      String message = "Hey User A, are you there?";
      jedis.publish("chat:general", message);
      System.out.println("User B published: '" + message + "'");
    } catch (Exception e) {
      System.err.println("Error: " + e.getMessage());
    }
  }
}

अपने चैट संदेश का डिज़ाइन बनाना

चैट अनुप्रयोग के लिए सामान्यतः केवल एक सरल स्ट्रिंग संदेश पर्याप्त नहीं होता। आप उसमें अधिक संदर्भ शामिल करना चाहेंगे। एक सामान्य तरीका यह है कि संदेश को प्रकाशित करने से पहले चैट संदेश के डेटा को JSON जैसे प्रारूप में क्रमबद्ध किया जाए।

इन चीज़ों को शामिल करने पर विचार करें:

  • sender: संदेश भेजने वाले का उपयोगकर्ता नाम या ID।
  • timestamp: संदेश कब भेजा गया (क्रम निर्धारित करने के लिए)।
  • text: संदेश की वास्तविक सामग्री।
  • roomId: (वैकल्पिक) चैनल या रूम की ID, जो क्लाइंट-पक्षीय प्रसंस्करण के लिए उपयोगी है।

कई चैट रूम संभालना

कई अलग-अलग चैट रूम (जैसे, 'general', 'private:alice-bob', 'developers') का समर्थन करने के लिए आपको केवल अलग-अलग चैनल नामों का उपयोग करना होगा।

  • हर रूम को एक अद्वितीय चैनल नाम मिलता है (जैसे, chat:general, chat:support)।
  • क्लाइंट केवल उन रूम के चैनलों की सदस्यता लेते हैं जिनमें वे सक्रिय हैं।
  • जब उपयोगकर्ता रूम बदलता है, तो उसका क्लाइंट पुराने चैनल की सदस्यता समाप्त करके नए चैनल की सदस्यता लेता है।

Pub/Sub की गैर-स्थायी प्रकृति

यह याद रखना बहुत महत्वपूर्ण है कि Redis Pub/Sub भेजो और भूल जाओ प्रणाली है। संदेश उस समय सक्रिय सभी सदस्यों तक पहुँचाए जाते हैं और फिर गायब हो जाते हैं।

  • यदि संदेश प्रकाशित होने के समय कोई उपयोगकर्ता ऑफ़लाइन है या उसकी सदस्यता नहीं है, तो ऑनलाइन वापस आने पर उसे वह संदेश नहीं मिलेगा।
  • स्थायी चैट इतिहास या ऑफ़लाइन उपयोगकर्ताओं को संदेश भेजने के लिए आपको Pub/Sub को Redis की अन्य डेटा संरचनाओं (जैसे Lists या Streams) या किसी अलग डेटाबेस के साथ मिलाना होगा।

चैट डिज़ाइन प्रश्नोत्तरी

आप Redis Pub/Sub के साथ एक चैट ऐप बना रहे हैं। उपयोगकर्ता चैनलों की सदस्यता लेकर रूम में शामिल होते हैं। यदि उपयोगकर्ता A ने chat:tech की सदस्यता ली है और उपयोगकर्ता B chat:random पर संदेश प्रकाशित करता है, तो क्या होगा?

पुनरावलोकन: रीयल-टाइम चैट डिज़ाइन

आपने Redis Pub/Sub का उपयोग करके रीयल-टाइम चैट अनुप्रयोग डिज़ाइन करने की मूल बातें सीख ली हैं:

  • हर चैट रूम एक अद्वितीय Redis चैनल से जुड़ा होता है।
  • उपयोगकर्ता किसी रूम में शामिल होने और संदेश प्राप्त करने के लिए चैनल को subscribe करते हैं।
  • उपयोगकर्ता सभी सदस्यों तक संदेश भेजने के लिए उन्हें किसी चैनल पर publish करते हैं।
  • संदेशों की संरचना ऐसी होनी चाहिए (जैसे, JSON) कि उनमें प्रेषक, समय-मुद्रा और सामग्री शामिल हो।
  • याद रखें कि Pub/Sub गैर-स्थायी है; संदेश पहुँचाए जाने के बाद समाप्त हो जाते हैं।

यह आधार अत्यंत प्रतिक्रियाशील चैट अनुभव बनाने में मदद करता है!

शुरुआत निःशुल्क

एआई शिक्षक के साथ Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “रियल-टाइम चैट डिज़ाइन करना” पाठ निःशुल्क है?

हाँ — Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “रियल-टाइम चैट डिज़ाइन करना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“रियल-टाइम चैट डिज़ाइन करना” में मैं क्या सीखूँगा?

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

क्या Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“रियल-टाइम चैट डिज़ाइन करना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. प्रतिरूप-आधारित सदस्यताएँ
  2. रियल-टाइम चैट डिज़ाइन करना
  3. घटना-आधारित संरचना
  4. उपस्थिति और online status tracking
← Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) पर वापस जाएँ