Redis rpoplpush

Redis rpoplpush
„Redis ma kilka wbudowanych rodzajów danych, a każdy z nich jest do różnych celów. Lista jest jednym z powszechnie używanych typów danych, które mogą przechowywać więcej niż 4 miliard. Szczególną rzeczą na liście Redis jest to, że umożliwia wstawienie i usuwanie elementów z głowy i ogona, co ma stałą złożoność czasu. LPUSH I Rpush są używane do wstawienia elementów strun w pobliżu głowy i ogona listy. Również LPOP I RPOP Usuń elementy listy na głowie i ogonie."

Polecenie rpoplpush

Polecenie RPOPPUSH służy do wyspania elementu z ogona listy źródłowej i wstawienia go na czele listy docelowej przechowywanej na danym kluczu. Zarówno usuwanie, jak i wprowadzenie na listach źródłowych i docelowych zdarza się jednocześnie.

Załóżmy, że lista przechowywana w Key A Zawiera struny „Apple”, „Orange” i „Banana”. Ponadto kolejna lista przechowywana w Key B ma elementy „winogrona” i „awokado”. Jeśli wywołamy polecenie rpoplpush, w którym lista A jest źródłem, a lista b jest miejscem docelowym, usunie ciąg „bananowy” z listy A i wstaw go tuż przed elementem „winogron” na liście B.

Składnia

Polecenie rpoplpush ma następującą składnię.

Rpoplpush source_list_key destying_list_key

Źródło_list_key: To jest klucz Redis z listy, którego potrzebujesz, aby usunąć element.

Destination_List_key: To jest klucz Redis z listy, którego potrzebujesz, aby wstawić wyskoczony element.

To polecenie zwraca odpowiedź ciągów, która jest elementem listy wyskakującej z listy źródłowej, jeśli dostępna jest lista źródeł. Gdy lista źródeł nie istnieje, polecenie powróci zero wartość. W niektórych przypadkach źródło i miejsce docelowe mogą być takie same. Stąd wykonuje zarówno wstawianie, jak i usuwanie na tej samej liście.

Przypadek użycia 01 - Wdrożenie kolejki przesyłania wiadomości

Listy Redis były najczęściej używane w implementacjach serwerów przesyłania wiadomości, w których producenci wytwarzają dane w pobliżu szefa listy, a konsumenci zużywają dane z ogona listy zapisanej w określonym kluczu. Pomyśl o sytuacji, w której rzucany jest niepowodzenie sieci lub problem serwera; konsument może stracić wyskakowane dane przed rozpoczęciem przetwarzania. Może to być strata, której konsumenci nie mogą wyzdrowieć w ciągu swojego życia. Stąd potrzebna jest bardziej niezawodna kolejka. Wykorzystajmy polecenie RPOPPUSH, aby zaimplementować kolejkę niezawodności.

Utwórzmy listę Lista procesów z kilkoma elementami, jak pokazano następujące. Komenda LPUSH może być używana do wytworzenia niektórych danych na określonej listy.

Lpush Processlist „P1” „P2” „P3” „P4”

Powyższe polecenie przesunie elementy w pobliżu głowy listy. Stąd elementy będą przechowywane w następującej kolejności.

„P4” | „P3” | „P2” | „P1”

Następnie będziemy używać Rpoplpush Polecenie jako klienta, aby wysłać ostatni element listy listy i wepchnąć go na nową listę zapisaną na kluczu Niezawodność.

RPOPPUSH PROCESLIST LLIST WILIFIALIKUEUE

Idealnie, element „P1” musiał zostać wyskakujący z listy źródłowej, a ciąg „P1” powinien być wyjściem tego polecenia. Jednocześnie ten element jest wciswy na listę przechowywaną w kluczu Niezawodność. Sprawdźmy to za pomocą Lrange Komenda.

Lrange niezawodność 0 5

Wyjście:

Będziemy dzwonić Lrange polecenie na liście Lista procesów również.

Lrange ProcessList 0 5

Wyjście:

Zgodnie z oczekiwaniami element „P1” jest usuwany z listy źródłowej. Rpoplpush Polecenie jest zalecane do używania z kolejkami niezawodności.

Przypadek użycia 02 - Wdrożenie wiarygodnych węzłów pracowniczych w celu przetwarzania poszczególnych aplikacji

Jak wspomniano, źródło i miejsce docelowe mogą być takie same dla polecenia rpoplpush. W takim przypadku wprowadzenie i usuwanie są wykonywane na tej samej liście. Może to być przydatne przy wdrażaniu systemu monitorowania w celu przetwarzania setek aplikacji wywiadów do danego zadania.

Wielu pracowników i iteruje listę, dopóki wszystkie aplikacje nie zostaną przetworzone. Najlepszą rzeczą w tego rodzaju okrągłej kolejce jest to, że nie straci żadnej aplikacji, ponieważ element jest powtórzony na tę samą listę i ostatecznie otrzymywany przez jednego z pracowników w następnej iteracji.

Utwórzmy nową listę, LEALICATION LILITACJA.

Lpush JobapplicationList CV1 CV3 CV7 CV10

Lista powinna wyglądać jak następujące.

„CV10” | „CV7” | „CV3” | „CV1”

Teraz zadzwońmy do polecenia rpoplpush z tą samą listą, co argumenty źródłowe i docelowe pokazane następująco.

Rpoplpush JobapplicationList LobapplicationList

Zgodnie z oczekiwaniami element ogona „CV1” został usunięty i zwrócony przez polecenie.

Możemy sprawdzić LEALICATION LILITACJA Lista ponownie, aby sprawdzić, czy element „CV1” został wstawiony w pobliżu głowy tej samej listy.

Lrange JobapplicationList 0 5

Jak widać, element „CV1” został wstawiony z głowicy listy zapisanej na klucz LEALICATION LILITACJA. Lista okrągła może być używana jako niezawodny sposób wdrażania takich systemów monitorowania.

Wniosek

Podsumowując, polecenie RPOPPUSH jest jednym z powszechnie używanych poleceń, które zostały użyte do wykonywania zarówno usuwania, jak i wstawienia list jednocześnie. Jak wiecie, to polecenie akceptuje listy źródłowe i docelowe jako argumenty. Element ogona listy źródłowej zostanie wyskoczony i włożony w pobliżu szefa listy docelowej przechowywanej w określonym klawiszu. Jak omówiono, polecenie RPOPPUSH służy do wdrożenia wiarygodnych kolejek w systemach przesyłania wiadomości, a także w systemach monitorowania, w których wiele węzłów pracowniczych pracuje na danej liście elementów równoległych w niezawodny sposób z utraconym odzyskiwaniem. To polecenie jest przestarzałe z wersji 6 Redis.2.0 i zachęcany do użycia Lmove polecenie z PRAWIDŁOWY I LEWY argumenty.