Redis Mrange

Redis Mrange
Strutture di dati complesse utilizzano vari meccanismi di indicizzazione. La maggior parte di loro usa indici numerici. I dati delle serie temporali sono un'altra struttura di dati che utilizza un timestamp come indice. Diversi scenari del mondo reale utilizzano l'archiviazione dei dati delle serie temporali per archiviare questo tipo di dati.

Esempio - Tasso di inflazione per un po '

Di solito, le variazioni del tasso di inflazione per un determinato periodo sono rappresentate dagli indici del timestamp come mostrato nei seguenti. Varia con il tempo.

Questa è una metodologia di rappresentazione dei dati molto utile in applicazioni come il trading azionario, i dati meteorologici, il carico della CPU per un periodo, ecc.

Redis e serie temporali

Redis ha offerto l'archiviazione dei dati delle serie temporali con set e flussi ordinati tradizionali. Entrambe queste strutture di dati non hanno supportato query di manipolazione dei dati avanzate. Sono stati solo in grado di recuperare i dati in base a un determinato intervallo di timestamp superiore e inferiore. Non vi era alcun supporto per le aggregazioni, recuperare i dati per diversi intervalli di tempo o downsampling. Con l'arrivo dell'API di Redis Modules, è stato introdotto un database della serie temporale con alcune potenti funzionalità.

API REDIS MODULES

Redis Core ha numerose funzionalità integrate. Tuttavia, la funzionalità di Redis può essere estesa con moduli esterni. Questi moduli aggiungerebbero un nuovo set di funzionalità e comandi al core Redis. Queste librerie possono essere caricate su Redis in due modi.

  1. Usando i Redis.File di configurazione di configurazione
  2. Utilizzando il comando "carico del modulo"

1. Il Redis.Il file di configurazione di configurazione può essere utilizzato per caricare librerie di terze parti modificando la seguente riga nella sezione Moduli.

LoadModule/Path/To/Redistimeseries.COSÌ

Le "redistimeseries.Quindi 'il modulo può essere scaricato dal sito Web ufficiale di Redis. Inoltre, è necessario riavviare il server Redis.

2. Il comando "Module Load" può essere utilizzato anche per collegare un nuovo modulo al server Redis. Questo comando può essere utilizzato in fase di esecuzione.

Modulo caricamento/percorso/a/mymodule.COSÌ

Quindi è possibile elencare l'elenco dei moduli disponibile come mostrato.

Elenco dei moduli

Produzione:

Il modulo "Timeseries" è elencato, il che significa che è stato collegato correttamente.

Modulo Redistimeseries

Il modulo "Redistimeseries" implementa un archivio di dati delle serie temporali con un ricco set di comandi. Mantiene un elenco doppiamente collegato al centro che è leggero. Ogni nodo dell'elenco collegato è costituito da due array corrispondenti con una dimensione di 128 bit. Un array è archiviare i timestamp e l'altro è per i valori del campione. Il timestamp e il suo valore insieme sono chiamati un campione.

Il TS.Comando Mrange

Diversi comandi sono disponibili nella libreria Redistimeseries per manipolare le file di dati delle serie temporali. Il ts.Mrange 'è uno dei comandi più popolari che viene utilizzato per interrogare una serie di valori di dati. È in grado di interrogare i valori dei dati in più serie temporali, che è la versione avanzata di TS.Comando di intervallo. Fornisce inoltre caratteristiche di aggregazione come AVG, primo, ultimo, somma, conteggio, ecc.

Il ts.Il comando di Mrange può interrogare l'intervallo dal timestamp 1 a timestamp n. Allo stesso tempo, può recuperare i dati in tutte e tre le serie temporali TS1, TS2 e TS3.

Sintassi

Ts.MRANGE INTERMINGITAMP ENDTIESTAMP
[Filter_by_ts]
[Filter_by_Value]
[Withlabels | Selected_labels Label1 Label2…]
[Conteggio Rowcount]
[Aggregatore di aggregazione]
[Filtro filtro]
[Etichetta Groupby]

I parametri "inizialetimestamp" e "endtimestamp" specificano l'intervallo dei dati da interrogare. Questi due parametri sono obbligatori. Tutti gli altri parametri sono opzionali al comando.

Esempio: recupero dei dati del mercato azionario

Supponiamo un'applicazione del mondo reale in cui dobbiamo archiviare i prezzi di vendita orari di coppie di valute pesantemente scambiate. La libreria di serie temporali Redis può essere utilizzata per archiviare e manipolare i dati in modo efficiente.

Usiamo il ts.Crea il comando 'per creare serie temporali per coppia di valute.

ts.Crea TS: EUR: tipo di etichette USD "Forex"
ts.Crea TS: USD: Etichette CHF Tipo "Crypto"
ts.Crea TS: USD: JPY Etichette TIPO "Forex"

Abbiamo aggiunto un'etichetta chiamata tipo per ciascuna delle serie temporali sopra. Successivamente, dovremmo aggiungere dati di esempio alle serie temporali di cui sopra. Il ts.Aggiungi il comando 'può essere utilizzato.

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

Produzione:

IL '*'comanda al server Redis di utilizzare il tempo del server corrente come timestamp. Puoi vedere che il valore del timestamp è stato restituito da ogni comando. Usiamo il ts.Mrange 'comando di interrogare i dati in tutte le serie temporali' in cui il tipo è 'forex' e i timestamp di avvio e fine sono 1655631860414, 165563190914, rispettivamente.

ts.Mrange 1655631860414 1655631909914 Filtro Type = "Forex"

Produzione:

Come previsto, il ts.Le righe dei dati interrogate di comando di Mrange in entrambe le serie temporali TS: EUR: USD e TS: USD: JPY.

Prendiamo le righe dei dati in cui il tipo è qualcosa nel "forex" o "cripto". I timestamp di inizio e fine sono gli stessi dello scenario precedente.

ts.Mrange 1655631860414 1655631909914 Tipo di filtro = (Forex, Crypto)

Produzione:

Come puoi vedere, il comando ha recuperato i dati di tutte le serie temporali che abbiamo creato in precedenza.

La bandiera "Withlabels"

Possiamo usare il parametro opzionale "Withlabels" per mostrare le etichette nell'output.

ts.Mrange 1655631860414 165563190914 Withlabels Tipo di filtro = (Forex, Crypto)

Produzione:

Il flag "Filter_by_Value"

Questo flag filtrerebbe i risultati in base all'intervallo di valori specificati. È possibile specificare un valore minimo e massimo per questo flag.

ts.Mrange - + Filter_By_Value 370 490.2 Filtro Type = (Forex, Crypto)

È possibile utilizzare i simboli '-' e '+' per indicare i timestamp minimi e massimi possibili. In questo esempio, il parametro "Filter_by_Value" prende i valori 370 e 490.2 che comanda al server Redis per interrogare i dati delle serie temporali in cui i valori si trovano nell'intervallo specificato.

Produzione:

Il flag "Filter_by_ts"

È possibile filtrare i risultati per il loro esatto valore del timestamp come mostrato nel seguente.

ts.Mrange - + Filter_By_TS 1655631873854 TIPO FILTRO = CRYPTO

In questo caso, abbiamo specificato il valore del timestamp come 1655631873854.
Ciò filtrerebbe i dati risultanti come mostrato nei seguenti.

Conclusione

Redis offre funzionalità di database delle serie temporali attraverso la sua API del modulo esterno. Il "TimeseriesModule" può essere collegato al solito negozio Redis utilizzando un file di configurazione o il comando di runtime. I dati della serie temporale possono essere archiviati in 128 bit di blocchi. Il ts.Il comando Mrange viene utilizzato per interrogare i dati in più serie temporali. È la versione avanzata di TS.ALLINEARE'. Questo comando offre diverse funzionalità come aggregazioni, raggruppamento, filtraggio, ecc.