Streaming danych za pomocą Redis
We współczesnym świecie dane są generowane w sposób ciągły z platform mediów społecznościowych, stron internetowych i urządzeń IoT. Stąd przesyłanie strumieniowe danych jest nie do powstrzymania. Strumień można zidentyfikować jako serię zdarzeń generowanych z wielu jednoczesnych źródeł. Na przykład stacja pogodowa generuje dane pogodowe w danym miejscu co godzinę. Każde zdarzenie składa się z danych pogodowych, takich jak temperatura, wilgotność, prędkość wiatru i kierunek.
Strumienie Redis pomagają przechwytywać, zarządzać i zrozumieć tak dużą ilość danych strumieniowych.
Zwykle źródła, które generują dane lub zapisują do strumienia, nazywane są producentami. Każdy producent dodaje nowy wpis do strumienia Redis z unikalnym identyfikatorem zdarzenia, w którym zdarzenie składa się z jednej lub więcej par pola podobnych do skrótu Redis. Z drugiej strony konsumenci czytają ze strumienia, aby wygenerować znaczące spostrzeżenia. Producenci i konsumenci nie muszą wiedzieć o swoich szczegółach wdrażania, dzięki czemu strumienie Redis są bardziej niezawodne.
Wpisy strumienia Redis i węzły makro
Typ strumienia Redis oparty jest na szeroko stosowanych strukturach danych drzewa Radix. Zwykle drzewo Radix składa się z kilku węzłów makro, w których jeden węzeł makro może przechowywać wiele wpisów strumieniowych. Ponieważ drzewo Radix jest zoptymalizowanym pamięcią drzewo prefiksów, strumienie Redis można użyć z niskim zużyciem pamięci. Ponadto podstawowe drzewa Radix umożliwiają strumienie dostęp do danych losowo lub w określonym zakresie przy wyższej wydajności.
Polecenie XADD dodaje nowy wpis do węzła makro w strumieniu. Po dodaniu wpisu jest to niezmienne. Stąd nazywa się to strukturą danych tylko w dodatku.
Polecenie XDEL
W niektórych przypadkach utrzymanie milionów historycznych danych strumieniowych może nie być tego warte z powodu wygaśnięcia danych. Dlatego strumienie Redis obsługują usunięcie wpisów ze struktury danych i zwolnią pamięć. Możemy użyć polecenia XDEL, aby usunąć wpis z określonego strumienia.
Składnia:
XDEL[entry_id…]
Polecenie XDEL akceptuje wiele entry_dówek. Stąd możesz usunąć wiele wpisów na polecenie. To polecenie zwraca liczbę usuniętych wpisów strumienia. Ilekroć podany entry_del nie istnieje w strumieniu, zwrócona liczba jest mniejsza niż określona liczba identyfikatorów.
Mechanizm usuwania wejścia do strumienia Redis
Polecenie XDEL nie zrzuca wpisów strumienia od razu. Zamiast tego oznacza, że najpierw został usunięty. Stąd wpis strumienia będzie nadal wykorzystywał przydzieloną pamięć. Pamięć zostanie wydana, gdy wszystkie wpisy należące do węzła makro zostaną usunięte. Zmusiłoby to serwer Redis do zwolnienia pamięci dla tego węzła makro.
Przykład 1: Usuń stary wpis danych pogody ze strumienia
Najpierw stwórzmy strumień do przechowywania danych pogodowych w San-Francisco City za pomocą polecenia XADD. Załóżmy, że czujniki wytwarzają dane codziennie w południe. Dlatego w tym przykładzie będziemy dodawać dane przez trzy dni.
Xadd SanfrancismoWeather * Temp 18.4 Wiatr 12 wilgotność 67
Xadd SanfrancismoWeather * Temp 12.6 Wiatr 5 wilgotność 34
Xadd SanfrancismoWeather * Temp 5 wiatr 1 wilgotność 23
Załóżmy, że pierwszy wpis pochodzi z ostatniego miesiąca i nie musimy śledzić danych z poprzedniego miesiąca.
Dlatego możemy użyć polecenia XDEL do usunięcia pierwszego wpisu z ID 1656493771190-0.
XDEL SANFRANCISWEATHER 1656493771190-0
Polecenie XDEL zwróciło liczbę całkowitą 1, co oznacza, że tylko jeden wpis został usunięty ze strumienia.
Użyjmy polecenia Xrange, aby odczytać strumień i sprawdzić, czy identyfikator wpisu 1656493771190-0 został oznaczony jako usunięty.
Xrange SanfranciscoWeather - +
Zgodnie z oczekiwaniami, dostępne są tylko dwa ostatnie wpisy, a pierwszy wpis został usunięty.
Przykład 2: Usuń wiele wpisów pogodowych ze strumienia
Powiedzmy, że musimy jednocześnie usunąć wiele wpisów ze strumienia. Polecenie XDEL go obsługuje. Możesz określić identyfikatory wpisu, jak pokazano następujące.
Usuniemy pozostałe dwa wpisy ze strumienia SanfrancismoNather, który stworzyliśmy w poprzednim przykładzie. 1656493789125-0 i 1656493802770-0 to identyfikatory pozostałych dwóch wpisów.
XDEL SANFRANCISWEATHER 1656493789125-0 1656493802770-0
Zgodnie z oczekiwaniami wartość zwrotu polecenia jest 2, co wskazuje, że dwa wpisy zostały usunięte.
Przeczytajmy strumień
Strumień SanfrancismoUather jest pusty.
Wniosek
Strumienie Redis można zidentyfikować jako serię zdarzeń wytwarzanych przez jednoczesne źródła. Strumień może pomieścić kilka wpisów, w których każdy wpis ma unikalny identyfikator i składa się z par wartości pola. Strumienie Redis oparte są na strukturze danych drzewa Radix, dzięki czemu są wysoce wydajne i zoptymalizowane pamięcią. Wpisy dodane do strumienia można usunąć za pomocą polecenia Redis xDel. To polecenie oznacza wpis jako usunięty zamiast zrzucania wpisu i zwolnienia pamięci. Odzyskuje pamięć, gdy wszystkie wpisy węzła makro są oznaczone jako usunięcie.