Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Jakie są główne różnice między Redis Pub/Sub a Redis Stream?

Przechowywanie danych

Pub/Sub to platforma wydawcy/subskrybenta, nie służy do przechowywania danych. Opublikowane wiadomości znikają, niezależnie od tego, czy był jakiś subskrybent.

W strumieniach Redis strumień jest typem danych, strukturą danych samą w sobie. Wiadomości lub wpisy są przechowywane w pamięci i pozostają tam do czasu wydania polecenia usunięcia.

Komunikacja synchronizacji/async (Push/Pull)

Pub/Sub to komunikacja synchroniczna (push protokół). Wszystkie strony muszą być aktywne w tym samym czasie, aby móc się komunikować. Tutaj Redis jest wyłącznie brokerem synchronicznych wiadomości.

Strumienie Redis pozwalają na synchroniczne (XREAD z BLOCK i specjalny $ Identyfikator to wypchnięcie protokołem) i komunikacji asynchronicznej (zwykły XREAD to pociągnięcie protokół). XREAD z BLOCK jest jak Pub/Sub, ale z możliwością wznowienia po rozłączeniu bez utraty wiadomości.

Semantyka dostarczania

Pub/Sub to opcja „najwyżej raz”, czyli „uruchom i zapomnij”.

Redis Streams umożliwia zarówno co najmniej raz, jak i co najmniej raz (wyraźne potwierdzenie wysłane przez odbiorcę)

Tryb blokowania dla konsumentów

Pub/Sub działa tylko w trybie blokowania. Po zasubskrybowaniu kanału klient przechodzi w tryb subskrybenta i nie może wydawać poleceń (z wyjątkiem [P]SUBSCRIBE , [P]UNSUBSCRIBE , PING i QUIT ), stała się tylko do odczytu.

Redis Streams pozwala konsumentom czytać wiadomości w trybie blokowania lub nie.

Rozwiń

Pub/Sub jest dostępny tylko w trybie fan-out. Wszyscy aktywni klienci otrzymują wszystkie wiadomości.

Redis Streams umożliwia rozszerzanie (za pomocą XREAD ), ale także w celu udostępnienia wielu klientom innego podzbioru komunikatów z tego samego strumienia. Umożliwia to skalowanie przetwarzania komunikatów przez kierowanie różnych komunikatów do różnych procesów roboczych w taki sposób, że ta sama wiadomość nie jest dostarczana do wielu konsumentów. Ten ostatni scenariusz jest osiągany dzięki grupom konsumenckim .

Strumienie Redis zapewniają znacznie więcej funkcji, takich jak sygnatury czasowe, pary wartości pól, zakresy itp. Nie oznacza to, że zawsze powinieneś wybierać strumienie. Jeśli Twój przypadek użycia można osiągnąć za pomocą Pub/Sub, lepiej będzie wtedy użyć Pub/Sub. W przypadku strumieni musisz dbać o wykorzystanie pamięci.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis Stack Exchange, jak usuwać lub pobierać klucze według wzorca

  2. Skróć czas wykonywania zadań sidekiq

  3. Jak wygasnąć klucz podrzędny HSET w redis?

  4. Pipelining vs Batching w Stackexchange.Redis

  5. Filtrowanie elementów w Redis