Jakie są zalety i minusy każdego? Proszę poradzić kiedy używać jednego, a nie drugiego.

19
ando 31 grudzień 2019, 09:42

1 odpowiedź

Najlepsza odpowiedź

Przechowywanie danych

Pub / Sub to platforma wydawcy / subskrybenta, nie jest przechowywaniem danych. Opublikowane wiadomości odparowują, niezależnie od tego, czy był jakiś abonent.

W strumieniach Redis, strumień jest typem danych, struktura danych samodzielna. Wiadomości lub wpisy są przechowywane w pamięci i pozostają tam do momentu usunięcia.

Komunikacja synchronizacji / asynchronizacji (push / pull)

Pub / Sub jest synchroniczny komunikacja ( Push Protocol). Wszystkie imprezy muszą być aktywne w tym samym czasie, aby móc komunikować się. Tutaj Redis jest czystym synchronicznym brokerem wiadomości.

Strumienie Redis pozwalają na zarówno synchroniczne (XREAD za pomocą BLOCK i specjalny identyfikator $ jest protokół Push Protocol) i asynchroniczna komunikacja (regularna XREAD jest Protokół Pull ). XREAD za pomocą BLOCK jest jak pub / sub, ale z możliwością wznowienia się na odłączeniu bez utraty wiadomości.

Semantyka dostawy

Pub / Sub jest najwyżej raz, tj. "Ogień i zapomnij".

Strumienie Redis pozwala zarówno na co najmniej raz, jak i przynajmniej raz (wyraźne potwierdzenie wysłane przez odbiorcę)

Tryb blokowania dla konsumentów

Pub / Sub jest tylko tryb blokujący. Po zapisaniu kanału, klient jest umieszczony w trybie abonenta i nie może wydawać poleceń (z wyjątkiem [P]SUBSCRIBE, [P]UNSUBSCRIBE, {x2}} i {x3}} i QUIT i {{x3}). -tylko.

Strumienia Redis umożliwia konsumentom odczytanie wiadomości w trybie blokowania lub nie.

Fan-out.

Pub / Sub jest tylko wentylator. Wszyscy aktywni klienci otrzymują wszystkie wiadomości.

Strumienie Redis umożliwia fan-out (z {x0}}), ale także zapewnić inny podzbiór wiadomości z tego samego strumienia do wielu klientów. Umożliwia to przetwarzanie wiadomości skalowania, prowadząc różne wiadomości do różnych pracowników, w sposób, że nie jest możliwe, że ta sama wiadomość jest dostarczana do wielu konsumentów. Ten ostatni scenariusz jest osiągnięty dzięki grupy konsumenckie .


Strumienia Redis zapewniają wiele innych funkcji, takich jak znaczki czasowe, pary wartości pola, zakresy itp. Nie oznacza to, że zawsze powinieneś iść na strumienie. Jeśli twoje użycie można osiągnąć za pomocą pubu / sub, lepiej jest korzystać z pubu / sub. Z strumieniami musisz dbać o wykorzystanie pamięci.

36
LeoMurillo 24 marzec 2021, 19:28