Çekirdek veriGerçek zamanlı

Gerçek Zamanlı Sohbet ve Bildirimler

İletileri bağlı her istemciye gerçek zamanlı dağıtın; kümeler için parçalanmış kanallar ve geçmiş için akışlarla.

yayım, her abone
1
küme için kanallar
Parçalanmış
akışlarla
+geçmiş
Adım 1 / 5
Sunucular abone olur

Her WebSocket sunucusu, bağlı kullanıcılarının bulunduğu odalara abone olur.

Örnek oturumplaying
# Sunucular abone olur
hotkv> SUBSCRIBE room:42
1) "subscribe"
2) "room:42"
3) (integer) 1

Gerçek HotKV komutları ve örnek yanıtlarla animasyonlu bir anlatım. Herhangi bir adıma atlamak için üzerine tıklayın. Komutlar ve yanıtlar, HotKV'de yazdığınız ve gördüğünüz haliyle İngilizce kalır.

Sorun

Bir sohbet odası veya canlı bildirim akışı, birçok WebSocket sunucusu boyunca, bağlı her kullanıcıya aynı anda ulaşmak zorundadır. Bir veritabanını yoklamak çok yavaş ve çok pahalıdır; sunucuların da bir şeyin olduğunu birbirine söylemek için ortak bir yola ihtiyacı vardır.

HotKV bunu nasıl ele alır

Her WebSocket sunucusu, kullanıcılarının ilgilendiği kanallara abone olur. Bir şey olduğunda tek bir PUBLISH, abone olan her sunucuya ulaşır ve onlar da kullanıcılarına iletir. Parçalanmış kanallar, bir kümede trafiği kanalın sahibi olan düğümde tutar; her odanın yanındaki bir akış da sonradan katılan kullanıcılar için geçmişi saklar.

Adım adım

Ne olur, komut komut

  1. 01

    Sunucular abone olur

    Her WebSocket sunucusu, bağlı kullanıcılarının bulunduğu odalara abone olur.

    SUBSCRIBE room:42
  2. 02

    Alice bir ileti gönderir

    Sunucusu bir kez yayımlar. Yanıt, kaç abonenin aldığıdır.

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

    Geçmişi tutun

    İleti ayrıca odanın akışına eklenir; son 1000 iletiyle sınırlıdır.

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

    Bob daha sonra yeniden bağlanır

    Akıştan son 50 iletiyi okur, ardından kanalda canlıya geçer.

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

    Kümede parçalanmış kanallar

    Küme kipinde SPUBLISH iletiyi kanalın sahibi olan düğümde tutar.

    SPUBLISH room:{42}:typing "alice"
Nereye uyar

Gerçek dünya senaryoları

Ekip sohbeti ve destek sohbeti

İletiler, bir üyenin bağlantısını tutan her sunucuya dağılır ve akış yeni gelenlere birikmiş iletileri verir.

Canlı bildirimler

Sipariş güncellemeleri, bahsetmeler ve uyarılar gerçekleştikleri anda tarayıcıya itilir.

İş birlikli uygulamalar

İmleç konumları ve yazma göstergeleri kısa ömürlü kanallarda yayınlanır.

Yerleşik

Neler elde edersiniz

Dağıtım

Tek bir yayım her aboneye ulaşır.

PUBLISHSUBSCRIBE

Desen abonelikleri

Her odayı almak için room:* kanalına abone olun.

PSUBSCRIBE

Parçalanmış pub/sub

Kanallar, bir kümede sahibi olan düğümde kalır.

SPUBLISHSSUBSCRIBE

Geçmiş

Kullanıcıların kaçırdığı iletiler için bir kanalı sınırlı bir akışla eşleştirin.

XADDXREVRANGE

Sık sorulan sorular

Pub/sub iletileri saklanır mı?

Hayır. Pub/sub o anda abone olan kişiye teslim eder. Kullanıcıların geçmişe ihtiyacı varsa kanalın yanında bir akış kullanın.

Kümede çalışır mı?

Evet. Her kanalın trafiğinin sahibi olan düğümde kalması için parçalanmış pub/sub (SPUBLISH, SSUBSCRIBE) kullanın.

Anahtarlar değiştiğinde bildirim alabilir miyim?

Evet. Anahtar uzayı bildirimleri anahtar değişiklikleri için olaylar yayımlar. Anahtar uzayı bildirimleriyle ilgili belgelere bakın.

İlgili kullanım senaryoları

Kendi iş yükünüzde deneyin

HotKV, Redis protokolünü konuşur; bu yüzden mevcut bir istemciyi ona yönlendirip aynı komutları çalıştırabilirsiniz.