कोर डेटारीयल-टाइम

Real-Time Chat और Notifications

संदेशों को हर कनेक्टेड क्लाइंट तक रीयल टाइम में पहुँचाएँ, clusters के लिए sharded channels और history के लिए streams के साथ।

publish, हर subscriber तक
1
channels clusters के लिए
Sharded
streams के साथ
+history
कदम 1 में से 5
Servers subscribe करते हैं

हर WebSocket server उन रूम्स को subscribe करता है जिनमें उसके कनेक्टेड users हैं।

उदाहरण सेशनplaying
# Servers subscribe करते हैं
hotkv> SUBSCRIBE room:42
1) "subscribe"
2) "room:42"
3) (integer) 1

असली HotKV कमांड और उदाहरण रिस्पॉन्स के साथ एक एनिमेटेड वॉकथ्रू। किसी भी कदम पर क्लिक करके वहां पहुंचें। कमांड और रिस्पॉन्स अंग्रेज़ी में ही रहते हैं, ठीक वैसे जैसे आप HotKV में टाइप करते और देखते हैं।

समस्या

चैट रूम या लाइव notification feed को कई WebSocket servers के पार हर कनेक्टेड user तक एक साथ पहुँचना होता है। डेटाबेस को poll करना बहुत धीमा और महँगा है, और servers को एक-दूसरे को बताने का साझा तरीका चाहिए कि कुछ हुआ है।

HotKV इसे कैसे संभालता है

हर WebSocket server उन channels को subscribe करता है जिनमें उसके users की रुचि है। कुछ भी होने पर एक PUBLISH हर subscribed server तक पहुँचता है, जो उसे अपने users को आगे भेज देता है। Cluster में sharded channels ट्रैफ़िक को उसी node पर रखते हैं जो channel का मालिक है, और हर रूम के साथ रखा गया stream बाद में जुड़ने वाले users के लिए history सँभालता है।

कदम दर कदम

क्या होता है, कमांड दर कमांड

  1. 01

    Servers subscribe करते हैं

    हर WebSocket server उन रूम्स को subscribe करता है जिनमें उसके कनेक्टेड users हैं।

    SUBSCRIBE room:42
  2. 02

    Alice संदेश भेजती है

    उसका server एक बार publish करता है। जवाब बताता है कि कितने subscribers को वह मिला।

    PUBLISH room:42 "{\"from\":\"alice\",\"text\":\"Deploy is green\"}"
  3. 03

    History रखें

    संदेश रूम के stream में भी append होता है, जो आख़िरी 1000 संदेशों तक सीमित है।

    XADD room:42:history MAXLEN ~ 1000 * from alice text "Deploy is green"
  4. 04

    Bob बाद में फिर कनेक्ट होता है

    वह stream से आख़िरी 50 संदेश पढ़ता है, फिर channel पर लाइव हो जाता है।

    XREVRANGE room:42:history + - COUNT 50
  5. 05

    Cluster में sharded channels

    Cluster mode में SPUBLISH संदेश को उसी node पर रखता है जो channel का मालिक है।

    SPUBLISH room:{42}:typing "alice"
कहां फ़िट बैठता है

असली परिदृश्य

टीम चैट और support चैट

संदेश हर उस server तक फैलते हैं जिसके पास किसी सदस्य का कनेक्शन है, और stream नए आने वालों को पुराना backlog देता है।

Live notifications

Order updates, mentions और alerts ब्राउज़र को उसी पल भेज दिए जाते हैं जब वे होते हैं।

Collaborative apps

Cursor की स्थिति और typing indicators कम समय के channels पर broadcast होते हैं।

अंतर्निहित

आपको क्या मिलता है

Fan-out

एक publish हर subscriber तक पहुँचता है।

PUBLISHSUBSCRIBE

Pattern subscriptions

हर रूम पाने के लिए room:* को subscribe करें।

PSUBSCRIBE

Sharded pub/sub

Cluster में channels उसी node पर रहते हैं जो उनका मालिक है।

SPUBLISHSSUBSCRIBE

History

छूटे हुए संदेशों के लिए channel के साथ capped stream जोड़ें।

XADDXREVRANGE

आम सवाल

क्या pub/sub संदेश store होते हैं?

नहीं। Pub/sub उसे डिलीवर करता है जो उस पल subscribed है। अगर users को history चाहिए, तो channel के साथ एक stream इस्तेमाल करें।

क्या यह cluster में काम करता है?

हाँ। Sharded pub/sub (SPUBLISH, SSUBSCRIBE) इस्तेमाल करें, ताकि हर channel का ट्रैफ़िक उसी node पर रहे जो उसका मालिक है।

क्या keys बदलने पर मुझे सूचना मिल सकती है?

हाँ। Keyspace notifications key बदलावों के events publish करते हैं। Keyspace notifications पर docs देखें।

संबंधित उपयोग के मामले

इसे अपने वर्कलोड पर आज़माएं

HotKV Redis प्रोटोकॉल बोलता है, इसलिए आप किसी मौजूदा क्लाइंट को इसकी ओर इंगित करके यही कमांड चला सकते हैं।