Redis XTRIM

Redis Xtrim



Niski poziom szczegółów strumieni Redis

Strumienie Redis są strukturą danych tylko do dołączania, która zapewnia zestaw wysoce wydajnych operacji odczytu i wstawiania z mechanizmem pamięci o wysokiej wydajności pamięci. Wewnętrznie strumienie Redis używają struktury danych drzewa Radix, która jest zoptymalizowanym pod względem przestrzeni drzewem o wysokiej wydajności pamięci.

Strumienie Redis przechowują dane jako listę wpisów, gdzie każdy wpis składa się z par klucz-wartość. Na niskim poziomie wpisy te są pakowane w makrowęzły, jak pokazano poniżej.









W tym artykule skupiamy się na usuwaniu wpisów strumienia za pomocą polecenia XTRIM, a wspomniana powyżej koncepcja ściśle wpływa na wydajność operacji usuwania. Zwykle usuwanie wpisów strumienia Redis jest bardzo wydajne, jeśli odbywa się na poziomie makrowęzła, ale nie na poziomie wejścia. Ten mechanizm jest zaimplementowany za pomocą polecenia XTRIM, które omówimy w następnej sekcji.



Polecenie XTRIM

Polecenie XTRIM służy do odcinania wpisów strumienia na podstawie podanej wartości progowej. Próg może być maksymalną liczbą wpisów na strumień lub starszym identyfikatorem wpisu. Polecenie XTRIM akceptuje typ progu jako argument polecenia. Składnia polecenia XTRIM jest następująca.





XTRIM stream_key MAXLEN | MINID [ = | ~ ] Wartość progowa [ LICZBA LIMIT ]

stream_key : Klucz strumienia Redis.

MAKSYMALNA : Maksymalna długość strumienia po przycięciu wpisów. Zostaną usunięte wszystkie wpisy przekraczające długość strumienia określoną przez wartość progową. Ten argument jest dodatnią liczbą całkowitą.

MINID : Minimalny identyfikator strumienia, który powinien pozostać po przycięciu wpisów. Wszystkie wpisy zostaną usunięte, których identyfikatory są niższe niż określony próg. Za każdym razem, gdy określisz ten parametr, próg staje się identyfikatorem strumienia.

= operator : Po określeniu dokładne przycinanie zostanie wykonane na podstawie wartości progowej.

~ operator : Po określeniu wykonywane będzie prawie dokładne przycinanie na podstawie wartości progowej i rozmiaru makrowęzła.

Wartość progowa : Wartość progowa oparta na argumencie MAXLEN lub MINID.

LICZBA LIMIT : Maksymalna liczba wpisów do usunięcia.

Przypadek użycia 01 – Usuwanie wpisów strumienia na podstawie maksymalnej długości

Załóżmy, że firma turystyczna prowadzi sklep Redis, aby śledzić informacje turystyczne. Struktura danych strumieni Redis została wykorzystana do przechowywania informacji każdego turysty jako par klucz-wartość. Z czasem stream się rozrósł i planują zachować tylko 1000 najnowszych wpisów. Zidentyfikowali więc, że maksymalna długość strumienia powinna wynosić 1000 w dowolnym momencie. Do tego celu użyto polecenia XTRIM.

W celach demonstracyjnych najpierw utworzymy strumień z 10 wpisami w następujący sposób. Do wykonania wstawiania użyto polecenia XADD.

xadd informacja turystyczna * imię jack kraj włochy familymems 5
xadd informacja turystyczna * imię harry country usa familymems dwa
xadd informacja turystyczna * imię nikomita kraj japonia rodzinamems 3
xadd informacja turystyczna * nazwa zakaria kraj indie familymems dwa
xadd informacja turystyczna * nazwa redmond country brazil familymems 6
xadd informacja turystyczna * nazwa znaleziona kraj japonia familymems 3
xadd informacja turystyczna * name maryjohn country usa familymems dwa
xadd informacja turystyczna * imię liza kraj włochy familymems 5
xadd informacja turystyczna * nazwa nimshikaa kraj japonia rodzinamems 3
xadd informacja turystyczna * nazwa nisha kraj włochy familymems 5

Użyjmy polecenia XRANGE, aby sprawdzić informacje turystyczne strumienia w następujący sposób.

xrange informacja turystyczna - +

Wyjście:

Zgodnie z oczekiwaniami 10 wpisów strumienia zostało wyświetlonych przez to polecenie.

W celach demonstracyjnych przycinamy strumień tam, gdzie jego maksymalna długość wynosiłaby 5.

xtrim informacja turystyczna maxlen 5

Sprawdźmy ponownie wpisy strumienia za pomocą polecenia XRANGE.

Zgodnie z oczekiwaniami, pięć wpisów zostało usuniętych ze strumienia, a jego długość to 5.

Przypadek użycia 02 – usuwanie wpisów strumienia na podstawie identyfikatorów strumienia

Weźmy przykład, w którym firma meteorologiczna śledzi informacje o pogodzie w danej lokalizacji za pomocą strumieni Redis. Teraz chcą usunąć starsze wpisy, które nie są już potrzebne. Możemy użyć polecenia XTRIM przy użyciu strategii MINID, jak pokazano poniżej.

Najpierw stworzymy strumień o nazwie weatherinfo i dodamy do niego 5 wpisów w następujący sposób.

xdodaj informacje o pogodzie * temp 10 wilgotność pięćdziesiąt
xdodaj informacje o pogodzie * temp 20 wilgotność 70
xdodaj informacje o pogodzie * temp 12 wilgotność 65
xdodaj informacje o pogodzie * temp piętnaście wilgotność 88
xdodaj informacje o pogodzie * temp 18 wilgotność Cztery pięć

Wyjście:

Użyjmy polecenia XTRIM, aby usunąć wpisy, których identyfikatory są niższe niż określona wartość progowa.

Informacje o pogodzie xtrim MINID 1660485503248 - 0

Podany minimalny identyfikator jest powiązany z trzecim wpisem. W związku z tym wpisy po trzecim wpisie, które mają niższe identyfikatory, zostaną usunięte.

Wyjście:

Ponieważ nie określiliśmy jawnie argumentów = lub ~, polecenie domyślnie używa operatora =. Stąd dokładne przycinanie zostało wykonane w obu przypadkach użycia. Jeśli wyraźnie określiłeś operator ~, zostanie wykonane prawie dokładne przycinanie, jak pokazano poniżej.

Jak pokazano na powyższym rysunku, polecenie XTRIM zostało użyte z operatorem ~. Prosimy polecenie o usunięcie wszystkich wpisów, które przekraczają długość 100. Ponieważ nie zmuszamy polecenia XTRIM do dokładnego przycinania, skupi się na wydajności operacji przycinania. Nie usunie więc wpisów bezpośrednich należących do tego samego makrowęzła. Zachowa kolejne trzy wpisy znajdujące się w tym samym makrowęźle i usunie wszystkie kolejne makrowęzły. Daje to znaczną poprawę wydajności niż w przypadku dokładnego przycinania, co zmusza dowództwo do włożenia dodatkowego wysiłku. Ta sama procedura ma miejsce, gdy próg opiera się na identyfikatorach wejścia.

Argument LIMIT ogranicza liczbę wykluczonych wpisów z określonego strumienia, co można wykorzystać do uzyskania nieco większej poprawy wydajności.

Wniosek

W skrócie, polecenie XTRIM służy do usuwania wpisów strumienia na podstawie wartości progowej. Typ wartości progowej można zmienić w kontekście, który jest określany za pomocą argumentów komend MAXLEN i MINID. Jak wspomniano, przycinanie można wykonać na dwa sposoby, przy czym operacja przycinania będzie traktować próg jako dokładną lub przybliżoną granicę. Domyślnie w poleceniu używany jest operator = używany do dokładnego przycinania. Za pomocą operatora ~ możesz wykonać przybliżone przycinanie, jak wspomniano w powyższej sekcji. Ogólnie rzecz biorąc, przybliżone podejście do przycinania i argument LIMIT pomagają uzyskać znaczny wzrost wydajności za pomocą polecenia XTRIM.