Date de bazăTimp real

Chat și notificări în timp real

Trimiteți mesaje către fiecare client conectat, în timp real, cu canale partiționate pentru clustere și streamuri pentru istoric.

publicare, fiecare abonat
1
canale pentru clustere
Partiționate
cu streamuri
+istoric
Pasul 1 din 5
Serverele se abonează

Fiecare server WebSocket se abonează la camerele în care se află utilizatorii lui conectați.

Sesiune de exempluplaying
# Serverele se abonează
hotkv> SUBSCRIBE room:42
1) "subscribe"
2) "room:42"
3) (integer) 1

O demonstrație animată cu comenzi HotKV reale și răspunsuri de exemplu. Faceți clic pe orice pas pentru a sări la el. Comenzile și răspunsurile rămân în engleză, exact așa cum le tastați și le vedeți în HotKV.

Problema

O cameră de chat sau un flux de notificări live trebuie să ajungă la fiecare utilizator conectat deodată, pe mai multe servere WebSocket. Interogarea periodică a unei baze de date este prea lentă și prea scumpă, iar serverele au nevoie de o cale comună de a-și spune că s-a întâmplat ceva.

Cum o rezolvă HotKV

Fiecare server WebSocket se abonează la canalele care interesează utilizatorii lui. Când se întâmplă ceva, un singur PUBLISH ajunge la fiecare server abonat, care îl transmite utilizatorilor lui. Canalele partiționate țin traficul pe nodul care deține canalul într-un cluster, iar un stream alături de fiecare cameră păstrează istoricul pentru utilizatorii care se alătură mai târziu.

Pas cu pas

Ce se întâmplă, comandă cu comandă

  1. 01

    Serverele se abonează

    Fiecare server WebSocket se abonează la camerele în care se află utilizatorii lui conectați.

    SUBSCRIBE room:42
  2. 02

    Alice trimite un mesaj

    Serverul ei publică o singură dată. Răspunsul este numărul de abonați care l-au primit.

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

    Păstrați istoricul

    Mesajul este adăugat și în streamul camerei, plafonat la ultimele 1000 de mesaje.

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

    Bob se reconectează mai târziu

    El citește ultimele 50 de mesaje din stream, apoi intră live pe canal.

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

    Canale partiționate într-un cluster

    În modul cluster, SPUBLISH ține mesajul pe nodul care deține canalul.

    SPUBLISH room:{42}:typing "alice"
Unde se potrivește

Scenarii din lumea reală

Chat de echipă și chat de suport

Mesajele se distribuie către fiecare server care ține conexiunea unui membru, iar streamul le oferă noilor veniți mesajele anterioare.

Notificări live

Actualizările de comenzi, mențiunile și alertele sunt împinse în browser în clipa în care se întâmplă.

Aplicații colaborative

Pozițiile cursorului și indicatoarele de scriere sunt difuzate pe canale de scurtă durată.

Integrat

Ce primiți

Distribuire către mulți

O singură publicare ajunge la fiecare abonat.

PUBLISHSUBSCRIBE

Abonări pe tipare

Abonați-vă la room:* ca să primiți fiecare cameră.

PSUBSCRIBE

Pub/sub partiționat

Canalele rămân pe nodul care le deține, într-un cluster.

SPUBLISHSSUBSCRIBE

Istoric

Asociați un canal cu un stream plafonat pentru mesajele pierdute de utilizatori.

XADDXREVRANGE

Întrebări frecvente

Sunt stocate mesajele pub/sub?

Nu. Pub/sub livrează celor abonați în acel moment. Folosiți un stream alături de canal dacă utilizatorii au nevoie de istoric.

Funcționează într-un cluster?

Da. Folosiți pub/sub partiționat (SPUBLISH, SSUBSCRIBE), ca traficul fiecărui canal să rămână pe nodul care îl deține.

Pot fi notificat când se schimbă chei?

Da. Notificările de spațiu de chei publică evenimente pentru schimbările de chei. Vedeți documentația despre notificările de spațiu de chei.

Cazuri de utilizare înrudite

Încercați pe propria sarcină de lucru

HotKV vorbește protocolul Redis, așa că puteți îndrepta spre el un client existent și rula aceleași comenzi.