Redis Mrange

Redis Mrange
Komplexe Datenstrukturen verwenden verschiedene Indexierungsmechanismen. Die meisten von ihnen verwenden numerische Indizes. Zeitreihendaten sind eine weitere Datenstruktur, die einen Zeitstempel als Index verwendet. Mehrere reale Szenarien verwenden Zeitreihendatenspeicher, um diese Art von Daten zu speichern.

Beispiel - Inflationsrate über eine Weile

Normalerweise werden die Inflationsrate -Variationen für einen bestimmten Zeitraum durch die Zeitstempelindizes dargestellt, wie im folgenden gezeigt. Es variiert mit der Zeit.

Dies ist eine sehr nützliche Datenrepräsentationsmethode in Anwendungen wie Aktienhandel, Wetterdaten, CPU -Last über einen Zeitraum usw.

Redis- und Zeitreihe

Redis bietet Zeitreihen-Datenspeicher mit herkömmlichen sortierten Sets und Streams an. Beide Datenstrukturen stützten nicht erweiterte Datenmanipulationsabfragen. Sie konnten nur die Daten basierend auf einem bestimmten oberen und unteren Zeitstempelbereich abrufen. Es gab keine Unterstützung für Aggregationen, das Abrufen von Daten für verschiedene Zeitbereiche oder Down -Sampling. Mit der Ankunft der Redis-Module-API wurde eine Zeitreihendatenbank mit einigen leistungsstarken Funktionen eingeführt.

Redis Module API

Redis Core verfügt über zahlreiche integrierte Funktionen. Trotzdem kann die Redis -Funktionalität mit externen Modulen erweitert werden. Diese Module würden dem Redis -Kern einen neuen Funktionssatz und Befehle hinzufügen. Diese Bibliotheken können auf zwei Arten aufgenommen werden.

  1. Mit dem Redis.Conf -Konfigurationsdatei
  2. Verwenden Sie den Befehl "Modullast"

1. Die Redis.Conf Configuration-Datei kann verwendet werden, um Bibliotheken von Drittanbietern zu laden, indem die folgende Zeile im Abschnitt Module geändert wird.

loadmodule/path/to/redistimeseries.So

Die Redistimeries.Das Modul kann also von der offiziellen Redis -Website heruntergeladen werden. Außerdem müssen Sie den Redis -Server neu starten.

2. Der Befehl "Modullast" kann auch verwendet werden, um ein neues Modul auch an den Redis -Server anzuschließen. Dieser Befehl kann zur Laufzeit verwendet werden.

Modullast/Pfad/TO/MYMODULE.So

Anschließend können Sie die verfügbare Modulliste wie im Folgenden auflisten.

Modulliste

Ausgang:

Das "Timeseries" -Modul ist aufgeführt, was bedeutet, dass es erfolgreich angeschlossen wurde.

Redistimeries -Modul

Das Modul "Redistimeries" implementiert einen Zeitreihen-Datenspeicher mit einer Vielzahl von Befehlen. Es unterhält eine doppelt verknüpfte Liste im Kern, der leicht ist. Jeder Knoten der verknüpften Liste besteht aus zwei entsprechenden Arrays mit einer Größe von 128 Bits. Ein Array besteht darin, die Zeitstempel und das andere für Stichprobenwerte zu speichern. Der Zeitstempel und sein Wert zusammen werden als Probe bezeichnet.

Die ts.Mrange Command

In der Redistimeries -Bibliothek sind mehrere Befehle verfügbar, um Zeitreihen -Datenzeilen zu manipulieren. Die 'ts.Mrange 'ist eines der beliebtesten Befehle, mit denen ein Bereich von Datenwerten abfragt wird. Es ist in der Lage, Datenwerte über mehrere Zeitreihen hinweg abzufragen, was die erweiterte Version des TS ist.Bereich 'Befehl'. Es bietet auch Aggregationsfunktionen wie AVG, First, Last, Summe, Count usw.

Die 'ts.Mrange 'Befehl kann den Bereich von Zeitstempel 1 bis zum Zeitstempel n abfragen. Gleichzeitig kann es Daten in allen drei Zeitreihen TS1, TS2 und TS3 abrufen.

Syntax

Ts.Mrange Starttimestamp Endtimestamp
[Filter_by_ts]
[Filter_by_value]
[WithLabels | Selected_Labels Label1 Label2…]
[Graf RowCount]
[Aggregation Aggregator]
[Filterfilter]
[GroupBy Label]

Die Parameter "StartTimestamp" und "Endtimestamp" geben den Bereich der zu befragten Daten an. Diese beiden Parameter sind obligatorisch. Alle anderen Parameter sind für den Befehl optional.

Beispiel - Abrufen von Aktienmarktdaten

Nehmen wir eine reale Anwendung an, bei der wir die stündlichen Verkaufspreise für stark gehandelte Währungspaare aufbewahren müssen. Die Redis-Zeitreihenbibliothek kann verwendet werden, um die Daten effizient zu speichern und zu manipulieren.

Lassen Sie uns die Ts verwenden.Befehl erstellen, um Zeitreihen pro Währungspaar zu erstellen.

ts.Erstellen Sie TS: EUR: USD Labels Typ "Forex"
ts.Erstellen Sie TS: USD: CHF Labels Typ "Crypto"
ts.Erstellen Sie TS: USD: JPY Labels Typ "Forex"

Wir haben ein Etikett namens Typ für jede der oben genannten Zeitreihen hinzugefügt. Als nächstes sollten wir die oben genannten Zeitreihen Beispieldaten hinzufügen. Die 'ts.Fügen Sie 'Befehl hinzu, kann verwendet werden.

ts.Fügen Sie TS hinzu: Eur: USD * 350
ts.Fügen Sie TS hinzu: USD: CHF * 390
ts.Fügen Sie TS hinzu: USD: JPY * 490
ts.Fügen Sie TS hinzu: Eur: USD * 350.3
ts.Fügen Sie TS hinzu: USD: CHF * 390.6
ts.Fügen Sie TS hinzu: USD: JPY * 490.4

Ausgang:

Der '*'Befehst den Redis -Server, die aktuelle Serverzeit als Zeitstempel zu verwenden. Sie können sehen, dass der Zeitstempelwert von jedem Befehl zurückgegeben wurde. Lassen Sie uns die Ts verwenden.Mrange 'Befehl zur Abfrage der Daten in allen Zeitserien', bei dem der Typ 'Forex' und die Timestempe von Start und Ende 1655631860414, 1655631909914 ist.

ts.Mrange 1655631860414 1655631909914 Filter Typ = "Forex"

Ausgang:

Wie erwartet die 'ts.Mrange 'Befehlsbefehlsabfragete Datenzeilen in beiden Zeitreihen TS: EUR: USD und TS: USD: JPY.

Lassen Sie uns die Datenreihen abrufen, bei denen der Typ etwas im 'Forex' oder 'Crypto' ist. Die Zeitstempel für Start- und Ende sind die gleichen wie im vorherigen Szenario.

ts.Mrange 1655631860414 1655631909914 Filtertyp = (Forex, Crypto)

Ausgang:

Wie Sie sehen können, hat der Befehl Daten aus allen Zeitreihen abgerufen, die wir zuvor erstellt haben.

Die Flagge 'WithLabels'

Wir können den optionalen Parameter "WithLabels" verwenden, um die Beschriftungen in der Ausgabe anzuzeigen.

ts.Mrange 1655631860414 1655631909914 WithLabels Filter Typ = (Forex, Crypto)

Ausgang:

Das Flag 'filter_by_value'

Dieses Flag würde die Ergebnisse basierend auf dem Bereich der angegebenen Werte filtern. Sie können einen minimalen und maximalen Wert für dieses Flag angeben.

ts.Mrange - + filter_by_value 370 490.2 Filtertyp = (Forex, Crypto)

Sie können die Symbole '-' und '+' verwenden, um die minimalen und maximal möglichen Zeitstempel anzuzeigen. In diesem Beispiel nimmt der Parameter 'filter_by_Value' Werte 370 und 490 an.2 Dadurch befiehlt der Redis -Server die Zeitreihendaten, bei denen die Werte im angegebenen Bereich liegen.

Ausgang:

Das Flag 'filter_by_ts'

Sie können die Ergebnisse durch ihren genauen Zeitstempelwert filtern, wie im Folgenden gezeigt.

ts.Mrange - + filter_by_ts 1655631873854 Filtertyp = Crypto

In diesem Fall haben wir den Zeitstempelwert als angegeben 1655631873854.
Dies würde die resultierenden Daten wie im Folgenden herausgefiltert.

Abschluss

Redis bietet über seine externe Modul-API eine Zeitreihendatenbankfunktionen. Die 'TimeriesModule' kann mithilfe einer Konfigurationsdatei oder einer Laufzeitbefehl an den üblichen Redis -Speicher angeschlossen werden. Zeitreihendaten können in 128 Stücken gespeichert werden. Die 'ts.Der Befehl von Mrange wird verwendet, um Daten über mehrere Zeitreihen hinweg abzufragen. Es ist die erweiterte Version des 'Ts.BEREICH'. Dieser Befehl bietet mehrere Funktionen wie Aggregationen, Gruppierung, Filterung usw.