Redis Mange

Redis Mange
Złożone struktury danych wykorzystują różne mechanizmy indeksowania. Większość z nich używa indeksów numerycznych. Dane szeregów czasowych to kolejna struktura danych, która wykorzystuje znacznik czasu jako jego indeks. Kilka rzeczywistych scenariuszy wykorzystuje pamięć danych serii czasowych do przechowywania tego typu danych.

Przykład - stopa inflacji przez chwilę

Zwykle zmiany szybkości inflacji dla danego okresu są reprezentowane przez wskaźniki znaczników czasu, jak pokazano następujące. Zmienia się w zależności od czasu.

Jest to bardzo przydatna metodologia reprezentacji danych w aplikacjach takich jak handel zapasami, dane pogodowe, obciążenie procesora w okresie itp.

Redis i serie czasowe

Redis oferuje przechowywanie danych z serii czasu z tradycyjnymi sortowanymi zestawami i strumieniami. Obie te struktury danych nie poparły zaawansowanych zapytań manipulacyjnych danych. Byli w stanie odzyskać dane na podstawie danego górnego i dolnego zakresu znacznika czasu. Nie było wsparcia agregacji, pobierania danych dla różnych zakresów czasowych lub próbkowania spadku. Wraz z pojawieniem się interfejsu API modułów Redis, baza danych serii czasowych została wprowadzona z pewnymi potężnymi funkcjami.

API Moduły Redis

Redis Core ma wiele funkcji wbudowanych. Mimo to funkcjonalność Redis można rozszerzyć o moduły zewnętrzne. Te moduły dodałyby nowy zestaw funkcji i polecenia do rdzenia Redis. Te biblioteki można załadować do Redis na dwa sposoby.

  1. Za pomocą Redis.plik konfiguracyjny CONF
  2. Korzystanie z polecenia „ładowanie modułu”

1. Redis.Plik konfiguracyjny Conf może być używany do ładowania bibliotek stron trzecich poprzez modyfikację następującego wiersza w sekcji modułów.

loadmodule/ścieżka/do/recenzentomeria.Więc

„Redisttimeseries.więc „moduł można pobrać z oficjalnej strony internetowej Redis. Musisz także ponownie uruchomić serwer Redis.

2. Polecenie „Moduł ładowania” może być używane do podłączenia nowego modułu do serwera Redis. To polecenie może być używane w czasie wykonywania.

Obciążenie modułu/ścieżka/do/myModule.Więc

Następnie możesz wymienić listę dostępnych modułów, jak pokazano następujące.

Lista modułów

Wyjście:

Moduł „czasów” jest wymieniony, co oznacza, że ​​został pomyślnie podłączony.

Moduł redistymów

Moduł „Redistimeseries” implementuje sklep z serii czasowych z bogatym zestawem poleceń. Utrzymuje podwójnie połączoną listę, która jest lekka. Każdy węzeł połączonej listy składa się z dwóch odpowiednich tablic o wielkości 128 bitów. Jedna tablica to przechowywanie znaczników czasu, a druga jest dla wartości przykładowych. Znacznik czasu i jego wartość są nazywane próbką.

TS.Polecenie mange

Kilka poleceń jest dostępnych w bibliotece RedistimeSeries w celu manipulowania wierszami danych szeregów czasowych. „Ts.Mange 'jest jedną z najpopularniejszych poleceń, które służą do zapytania o zakres wartości danych. Jest w stanie zapytać o wartości danych w wielu szeregach czasowych, która jest zaawansowaną wersją „TS.Polecenie zasięgu '. Zapewnia również funkcje agregacji, takie jak AVG, po pierwsze, ostatnia, suma, liczba itp.

„Ts.Polecenie mange 'może zapytać o zasięg od znacznika czasu 1 do znacznika czasu n. Jednocześnie może pobierać dane we wszystkich trzech seriach czasowych TS1, TS2 i TS3.

Składnia

TS.Mange StartsTimestamp EndtimEstamp
[Filter_by_ts]
[Filter_by_value]
[Wabels | Wybrane_labels etykieta 1 etykieta 2…]
[Count RowCount]
[Agregacja Agregacja]
[Filtr filtra]
[Etykieta grupy]

Parametry „początkoweTimestamp” i „EndtimeStamp” określają zakres danych do zapytania. Te dwa parametry są obowiązkowe. Wszystkie pozostałe parametry są opcjonalne dla polecenia.

Przykład - pobieranie danych giełdowych

Załóżmy, że rzeczywista aplikacja, w której musimy przechowywać godziny sprzedaży cenowo obrotowych par walutowych. Biblioteka serii czasowych Redis może być używana do efektywnego przechowywania i manipulowania danymi.

Użyjmy „TS.Utwórz „polecenie, aby utworzyć szeregi czasowe na parę walutową.

TS.Utwórz TS: EUR: Etykiety USD Typ „Forex”
TS.Utwórz TS: USD: Etykiety CHF Typ „Crypto”
TS.Utwórz TS: USD: Etykiety JPY Typ „Forex”

Dodaliśmy etykietę o nazwie typ dla każdego z powyższych szeregów czasowych. Następnie powinniśmy dodać przykładowe dane do powyższych szeregów czasowych. „Ts.Dodaj polecenie można użyć.

TS.Dodaj TS: EUR: USD * 350
TS.Dodaj TS: USD: CHF * 390
TS.Dodaj TS: USD: JPY * 490
TS.Dodaj TS: EUR: USD * 350.3
TS.Dodaj TS: USD: CHF * 390.6
TS.Dodaj TS: USD: JPY * 490.4

Wyjście:

''*„poleca serwer Redis, aby używać bieżącego czasu serwera jako znacznika czasu. Możesz zobaczyć, jak wartość znacznika znacznika została zwrócona przez każde polecenie. Użyjmy „TS.Mange „Polecenie, aby zapytać o dane we wszystkich szeregach czasowych”, w których typ jest „Forex”, a odpowiednio 1655631860414, 165556319991909999919099999999999999999999999999999999.

TS.Mange 1655631860414 1655631909914 Filter type = „Forex”

Wyjście:

Zgodnie z oczekiwaniami, „TS.Mange 'Command Quered Data wiersze w obu szeregach czasowych TS: EUR: USD i TS: USD: JPY.

Przyprowadźmy wiersze danych, w których typ jest cokolwiek w „Forex” lub „Crypto”. Znacznik czasu początkowego i końca są takie same jak w poprzednim scenariuszu.

TS.Mange 1655631860414 1655631909914 Typ filtra = (Forex, Crypto)

Wyjście:

Jak widać, polecenie pobierało dane z całych szeregów czasowych, które utworzyliśmy wcześniej.

Flaga „withlabels”

Możemy użyć parametru opcjonalnego „WithLabels”, aby pokazać etykiety w wyjściu.

TS.Mange 1655631860414 1655631909914 Pokrycie filtra typu = (Forex, Crypto)

Wyjście:

Flaga „Filter_By_Value”

Ta flaga filtrowałaby wyniki na podstawie zakresu określonych wartości. Możesz określić minimalną i maksymalną wartość dla tej flagi.

TS.Mrange - + Filter_By_Value 370 490.2 Typ filtra = (Forex, Crypto)

Możesz użyć symboli „-” i „+”, aby wskazać minimalne i maksymalne możliwe znaczniki czasu. W tym przykładzie parametr „Filter_by_value” przyjmuje wartości 370 i 490.2, który poleca serwer Redis, aby zapytać o dane szeregów czasowych, w których wartości znajdują się w określonym zakresie.

Wyjście:

Flaga „Filter_by_ts”

Możesz odfiltrować wyniki ich dokładnej wartości znacznika czasu, jak pokazano następujące.

TS.mange - + Filter_by_ts 1655631873854 Typ filtra = krypto

W takim przypadku określiliśmy wartość znacznika czasu jako 1655631873854.
To odfiltrowałoby powstałe dane, jak pokazano następujące.

Wniosek

Redis oferuje możliwości bazy danych serii czasowych za pośrednictwem zewnętrznego interfejsu API modułu. „TimeSerieSmodule” można podłączyć do zwykłego sklepu Redis za pomocą pliku konfiguracyjnego lub polecenia czasu wykonywania. Dane serii czasowej można przechowywać w 128 bitach fragmentów. „Ts.Polecenie Mrange 'służy do zapytania o dane w wielu szeregach czasowych. Jest to zaawansowana wersja „TS.ZAKRES'. To polecenie oferuje kilka funkcji, takich jak agregacje, grupowanie, filtrowanie itp.