Základní dataReálný čas

Chat a oznámení v reálném čase

Rozesílejte zprávy všem připojeným klientům v reálném čase, se shardovanými kanály pro clustery a streamy pro historii.

publikování, každý odběratel
1
kanály pro clustery
Shardované
se streamy
+historie
Krok 1 z 5
Servery se přihlásí k odběru

Každý server WebSocket odebírá místnosti, ve kterých jsou jeho připojení uživatelé.

Ukázková relaceplaying
# Servery se přihlásí k odběru
hotkv> SUBSCRIBE room:42
1) "subscribe"
2) "room:42"
3) (integer) 1

Animovaný průvodce se skutečnými příkazy HotKV a ukázkovými odpověďmi. Kliknutím na kterýkoli krok na něj přeskočíte. Příkazy a odpovědi zůstávají anglicky, přesně tak, jak je v HotKV zadáváte a vidíte.

Problém

Chatovací místnost nebo živý feed oznámení musí k uživatelům dorazit najednou, napříč mnoha servery WebSocket. Dotazovat se databáze je příliš pomalé a drahé a servery potřebují sdílený způsob, jak si navzájem říct, že se něco stalo.

Jak to řeší HotKV

Každý server WebSocket odebírá kanály, na kterých záleží jeho uživatelům. Když se cokoli stane, jediné PUBLISH dorazí ke každému přihlášenému serveru, který ho předá svým uživatelům. Shardované kanály drží provoz na uzlu, který kanál vlastní, v clusteru, a stream vedle každé místnosti uchovává historii pro uživatele, kteří se připojí později.

Krok za krokem

Co se děje, příkaz po příkazu

  1. 01

    Servery se přihlásí k odběru

    Každý server WebSocket odebírá místnosti, ve kterých jsou jeho připojení uživatelé.

    SUBSCRIBE room:42
  2. 02

    Alice pošle zprávu

    Její server publikuje jednou. Odpověď říká, kolik odběratelů zprávu dostalo.

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

    Uchování historie

    Zpráva se také připojí do streamu místnosti, omezeného na posledních 1000 zpráv.

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

    Bob se později znovu připojí

    Přečte ze streamu posledních 50 zpráv a pak přejde naživo na kanál.

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

    Shardované kanály v clusteru

    V režimu clusteru SPUBLISH drží zprávu na uzlu, který kanál vlastní.

    SPUBLISH room:{42}:typing "alice"
Kam to zapadá

Scénáře z praxe

Týmový chat a chat podpory

Zprávy se rozesílají každému serveru, který drží připojení člena, a stream dává nově příchozím historii.

Živá oznámení

Aktualizace objednávek, zmínky a upozornění se do prohlížeče posílají v okamžiku, kdy nastanou.

Aplikace pro spolupráci

Pozice kurzorů a indikátory psaní se vysílají na krátce žijících kanálech.

Zabudováno

Co dostanete

Rozesílání

Jedno publikování dorazí ke každému odběrateli.

PUBLISHSUBSCRIBE

Odběry podle vzoru

Odebírejte room:* a dostanete každou místnost.

PSUBSCRIBE

Shardované pub/sub

Kanály zůstávají v clusteru na uzlu, který je vlastní.

SPUBLISHSSUBSCRIBE

Historie

Spojte kanál s omezeným streamem pro zprávy, které uživatelé zmeškali.

XADDXREVRANGE

Časté otázky

Ukládají se zprávy pub/sub?

Ne. Pub/sub doručuje tomu, kdo je v daném okamžiku přihlášen. Pokud uživatelé potřebují historii, použijte vedle kanálu stream.

Funguje to v clusteru?

Ano. Použijte shardované pub/sub (SPUBLISH, SSUBSCRIBE), aby provoz každého kanálu zůstal na uzlu, který ho vlastní.

Mohu dostat oznámení, když se klíče změní?

Ano. Notifikace prostoru klíčů publikují události o změnách klíčů. Viz dokumentace k notifikacím prostoru klíčů.

Související případy použití

Vyzkoušejte to na své zátěži

HotKV mluví protokolem Redisu, takže na něj můžete nasměrovat stávajícího klienta a spustit tytéž příkazy.