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.