Dati di baseTempo reale

Chat e notifiche in tempo reale

Distribuisci i messaggi a ogni client connesso in tempo reale, con canali shardati per i cluster e stream per la cronologia.

publish, tutti i subscriber
1
canali per i cluster
Shardati
con gli stream
+cronologia
Passo 1 di 5
I server si iscrivono

Ogni server WebSocket si iscrive alle stanze in cui si trovano i suoi utenti connessi.

Sessione di esempioplaying
# I server si iscrivono
hotkv> SUBSCRIBE room:42
1) "subscribe"
2) "room:42"
3) (integer) 1

Una dimostrazione animata con comandi HotKV reali e risposte di esempio. Clicca su un passo qualsiasi per andarci. Comandi e risposte restano in inglese, esattamente come li digiti e li vedi in HotKV.

Il problema

Una chat room o un feed di notifiche dal vivo deve raggiungere tutti gli utenti connessi nello stesso momento, su molti server WebSocket. Interrogare un database a intervalli è troppo lento e costoso, e i server hanno bisogno di un modo condiviso per dirsi che è successo qualcosa.

Come lo gestisce HotKV

Ogni server WebSocket si iscrive ai canali che interessano ai suoi utenti. Quando succede qualcosa, un solo PUBLISH raggiunge ogni server iscritto, che lo inoltra ai suoi utenti. In un cluster i canali shardati tengono il traffico sul nodo proprietario del canale, e uno stream accanto a ogni stanza conserva la cronologia per gli utenti che entrano dopo.

Passo dopo passo

Cosa succede, comando per comando

  1. 01

    I server si iscrivono

    Ogni server WebSocket si iscrive alle stanze in cui si trovano i suoi utenti connessi.

    SUBSCRIBE room:42
  2. 02

    Alice invia un messaggio

    Il suo server pubblica una volta. La risposta indica quanti subscriber l'hanno ricevuto.

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

    Conserva la cronologia

    Il messaggio viene aggiunto anche allo stream della stanza, limitato agli ultimi 1000 messaggi.

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

    Bob si riconnette più tardi

    Legge gli ultimi 50 messaggi dallo stream, poi passa al canale dal vivo.

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

    Canali shardati in un cluster

    In modalità cluster, SPUBLISH tiene il messaggio sul nodo proprietario del canale.

    SPUBLISH room:{42}:typing "alice"
Dove si usa

Scenari reali

Chat di team e di supporto

I messaggi raggiungono ogni server che ha la connessione di un membro, e lo stream dà ai nuovi arrivati i messaggi arretrati.

Notifiche dal vivo

Aggiornamenti degli ordini, menzioni e avvisi arrivano al browser nell'istante in cui accadono.

App collaborative

Posizioni dei cursori e indicatori di digitazione vengono trasmessi su canali di breve durata.

Integrato

Cosa ottieni

Fan-out

Una sola pubblicazione raggiunge ogni subscriber.

PUBLISHSUBSCRIBE

Sottoscrizioni a pattern

Iscriviti a room:* per ricevere tutte le stanze.

PSUBSCRIBE

Pub/sub shardato

In un cluster i canali restano sul nodo che li possiede.

SPUBLISHSSUBSCRIBE

Cronologia

Abbina a un canale uno stream limitato per i messaggi che gli utenti si sono persi.

XADDXREVRANGE

Domande frequenti

I messaggi pub/sub vengono salvati?

No. Il pub/sub consegna a chi è iscritto in quel momento. Usa uno stream accanto al canale se gli utenti hanno bisogno della cronologia.

Funziona in un cluster?

Sì. Usa il pub/sub shardato (SPUBLISH, SSUBSCRIBE), così il traffico di ogni canale resta sul nodo che lo possiede.

Posso ricevere una notifica quando cambiano le chiavi?

Sì. Le keyspace notification pubblicano eventi per le modifiche alle chiavi. Vedi la documentazione sulle keyspace notification.

Casi d'uso correlati

Provalo sul tuo carico di lavoro

HotKV parla il protocollo Redis, quindi puoi puntarci un client esistente ed eseguire questi stessi comandi.