REDIS BRPOP

REDIS BRPOP
Lista jest popularnym typem danych Redis, który przechowuje sekwencję ciągów na podstawie kolejności wstawiania. Jedna lista może pomieścić więcej niż 4 miliardy elementów. Unikalnym faktem na temat listy Redis jest to, że utrzymuje właściwości głowy i ogona, w których elementy można wstawić z obu stron. Zwykle LPUSH I Rpush Polecenia służą do wstawienia elementów do listy. Tymczasem zupełnie nowa lista jest tworzona z określonym kluczem. Wszystkie polecenia listy zachowują się w ten sam sposób, w jaki nowa lista jest tworzona po przekazywaniu nieistniejącego klucza.


Ponadto, gdy wszystkie elementy zostaną wyskakowane z listy, powiązany klucz zostanie usunięty z przestrzeni Klucz Redis. Lista Redis jest idealnym kandydatem do aplikacji o niskiej opóźnienia, ponieważ operacje wstawiania i usuwania mają stałą złożoność czasu w GŁOWA I OGON. Nie ma znaczenia, czy na liście znajduje się pięć czy tysiąc elementów. Czas na wstawienie i usunięcie trwa ciągły czas w pobliżu lewego i prawego końca.

Istnieje pewne praktyczne potrzeby usuwania elementów z ogona lub głowy danej listy. BRPOP I Blpop Polecenia są wprowadzane z wersji 2 Redis.0.0 Aby spełnić wymieniony wymóg. BRPOP Polecenie jest oceniane w tym przewodniku.

Polecenie BRPOP

BRPOP to zaawansowana wersja RPOP Komenda. RPOP Polecenie wyskakuje element z ogona listy, który jest przechowywany w danym kluczu. Jak sama nazwa wskazuje, polecenie BRPOP jest wersją blokującą RPOP. Gdy klucz nie istnieje, polecenie BRPOP nie powróci z zero wartość od razu jak w poleceniu RPOP. Zamiast tego czeka, aż nowa lista zostanie utworzona w tym kluczu. Po utworzeniu nowej listy u wspomnianego klawisza polecenie BRPOP wyskakuje w element ogona. Ponadto to polecenie akceptuje wiele klawiszy i wyskakuje tylko elementy z pierwszego klucza nie pustego.

Składnia:

Poniżej znajduje się składnia dla polecenia BRPOP:

BRPOP LIST_KEY [LIST_KEY…] Limit czasu


LIST_KEY: To jest klucz listy.
koniec czasu: Jest to wartość limitu czasu w sekundach, w których klient jest zablokowany do momentu osiągnięcia tego czasu.

Zwykle polecenie BRPOP zwraca wyjście tablicy:

Jeśli podano listę nieustanną, polecenie zwraca wartość elementu wyspped i klucz zawierającej listy jak w następującym formacie:

1) „Carlist”
2) „Benz”

Kiedy żaden element nie ma być wyskakujący z żadnej z określonych list, a limit czasu wygasł, zero Wartość jest zwracana.

(zero)
(10.46s)

Przykład: Manipulacja odtwarzaniem stacji radiowej z BRPOP

Załóżmy, że stacja radiowa musi odtwarzać piosenki z codziennej listy odtwarzania. Lista odtwarzania zawiera identyfikatory piosenki do zagrania. Piosenki powinny być zamówione w kolejności wstawiania. Każda piosenka jest wybierana od końca listy odtwarzania do zagrania.

Możemy użyć struktury danych Redis List do wdrożenia wspomnianej listy odtwarzania i operacji listy w celu manipulowania piosenek odtwarzania. Utwórzmy listę odtwarzania o nazwie PółnocnaPlayList i dodaj kilka identyfikatorów piosenek, jak pokazano następujące. LPUSH Do tego używane jest polecenie:

LPUSH MidnightPlayList Song001 Song004 Song010 Song100 Song101


Utworzy to listę, jak pokazano następująco:

Głowa -> Song101 | Song100 | Song010 | Song004 | Song001 <- tail


Nie blokujące zachowanie polecenia BRPOP

Teraz nadszedł czas, aby rozpocząć program. Powinniśmy wybrać piosenki z końca listy odtwarzania. Stąd, Song001 powinien zostać usunięty z listy odtwarzania i musi być odtwarzany przez rejestrator. Używamy polecenia BRPOP, aby wyskoczyć Song001 z listy odtwarzania i zdobycie identyfikatora piosenki do słuchacza klienta.

BRPOP MidnightPlayList 5


Argument limitu czasu jest określony jako pięć sekund. Od PółnocnaPlayList zawiera elementy, BRPOP Polecenie zachowuje się w sposób niekakujący. Stąd wyskakuje i zwraca element ogona do klienta.

Blokowanie zachowania polecenia BRPOP

Poprzednie wyniki można również osiągnąć za pośrednictwem polecenia RPOP. Dlatego spójrzmy na prawdziwą przewagę polecenia BRPOP z zachowaniem blokującym. Usuńmy wszystkie elementy z PółnocnaPlayList klucz za pomocą polecenia RPOP.

RPOP MidnightPlayList 4


To usuwa wszystkie pozostałe elementy z listy i PółnocnaPlayList Klucz jest również usunięty z miejsca Redis Key.

Wykonajmy polecenie BRPOP z 60-sekundowym limitu czasu i nieistniejącym kluczem PółnocnaPlayList. Teraz polecenie zachowuje się w sposób blokujący. Czeka na stworzenie klucza i element obecny na liście odtwarzania PółnocnaPlayList.


Przeciśnijmy element do północy Playlist za pomocą innego okna terminala podłączonego do tego samego magazynu danych Redis.

LPUSH MidnightPlayList Song400


Po stworzeniu PółnocnaPlayList Lista z elementem Song400, Okno klienta, które wykonało polecenie BRPOP, wyskakuje element Song400 z listy odtwarzania i natychmiast zwraca identyfikator piosenki.


Wybierz piosenkę z wielu list odtwarzania

Może być wiele list odtwarzania przez stacją radiową. Dlatego powinniśmy wybrać piosenkę z danych list odtwarzania w danym momencie. Załóżmy, że mamy trzy listy odtwarzania: MidnightPlayList1, MidnightPlayList2, I MidnightPlayList3. MidnightPlayList1 jest już pusty, podczas gdy pozostałe dwie listy odtwarzania nie są puste.

LPUSH MidnightPlayList2 Song1002 Song1005
LPUSH MidnightPlayList3 Song3000


Nazwijmy polecenie BRPOP wszystkimi trzema klawiszami, jak pokazano następująco:

BRPOP MidnightPlayList1 MidnightPlayList2 MidnightPlayList3 10 10


Od pierwszego klucza MidnightPlayList1 jest pusty, jest ignorowane przez polecenie tutaj. Sprawdza pierwszy klawisz nie pusty z listy dostępnych. Stąd polecenie lokalizuje MidnightPlayList2 Jako pierwszy nieudkowany klucz z kolejności kluczy. Zgodnie z oczekiwaniami, Song1002 jest usuwany z MidnightPlayList2.


Polecenie BRPOP ma stałą złożoność czasu w pobliżu głowy i ogona, gdy określono pojedynczy klucz. Złożoność czasu staje się O (n), gdy w poleceniu określono wiele kluczy. Ponadto to polecenie jest bardzo wydajne w zastosowaniach w aplikacjach o niskich opóźnień, takich jak kolejka, stos, harmonogram w mediach społecznościowych itp.

Wniosek

Podsumowując, lista Redis to zbiór elementów ciągów przechowywanych w danym kluczu, podczas gdy w kolejności wstawiania. Dostępnych jest kilka poleceń do działania na listach Redis o stałej złożoności czasu w pobliżu głowy i ogona. Jak wspomniano, polecenie BRPOP służy do usunięcia elementów z prawej strony listy Redis przechowywanej na danym klawiszu z obsługą blokowania. Polecenie BRPOP blokuje połączenie klienta, gdy nie są dostępne żadne elementy do usunięcia z określonych list. Jak wiecie, to polecenie akceptuje wiele klawiszy, w których element wyskakuje z pierwszej listy nie pustej.