Eksempel - Inflasjonsrate over en stund
Vanligvis er inflasjonsratevariasjonene for en gitt periode representert med tidsstempelindeksene som vist i det følgende. Det varierer med tiden.
Dette er en veldig nyttig metodikk for datarepresentasjon i applikasjoner som aksjehandel, værdata, CPU -belastning over en periode osv.
Redis og tidsserier
Redis har tilbudt tidsserie datalagring med tradisjonelle sorterte sett og strømmer. Begge disse datastrukturene støttet ikke avanserte datamanipulasjonsspørsmål. De var bare i stand til å hente dataene basert på et gitt øvre og nedre tidsstempelområde. Det var ingen støtte for aggregeringer, hentet data for forskjellige tidsområder eller nedsampling. Med ankomsten av Redis Modules API har en tidsserie-database blitt introdusert med noen kraftige funksjoner.
Redis Modules API
Redis Core har mange funksjoner i bygget. Likevel kan Redis -funksjonaliteten utvides med eksterne moduler. Disse modulene vil legge til et nytt funksjonssett og kommandoer til Redis -kjernen. Disse bibliotekene kan lastes til Redis på to måter.
1. Redis.Conf Configuration-fil kan brukes til å laste inn tredjepartsbiblioteker ved å endre følgende linje i modulens delen.
LoadModule/Path/To/Redistimeseries.så
'Redistimeseriene.så 'modul kan lastes ned fra det offisielle Redis -nettstedet. Du må også starte Redis -serveren på nytt.
2. Kommandoen 'Modul Load' kan også brukes til å koble en ny modul til Redis -serveren. Denne kommandoen kan brukes ved kjøretid.
Modulbelastning/sti/til/myModule.så
Da kan du liste ned den tilgjengelige modullisten som vist i det følgende.
Modulliste
Produksjon:
"Timeseries" -modulen er oppført, noe som betyr at den er koblet til vellykket.
Redistimeseries modul
"Redistimeseries" -modulen implementerer en tidsserie datalager med et rikt sett med kommandoer. Den opprettholder en dobbeltbundet liste i kjernen som er lett. Hver node på den koblede listen består av to tilsvarende matriser med en størrelse på 128 biter. Den ene matrisen er å lagre tidsstempene og den andre er for prøveverdier. Tidsstempelet og verdien sammen kalles en prøve.
TS.Mrange -kommando
Flere kommandoer er tilgjengelige i Redistimeseries -biblioteket for å manipulere dataserie -datraer. 'Ts.Mrange 'er en av de mest populære kommandoene som brukes til å spørre om en rekke dataverdier. Den er i stand til å spørre dataverdier på tvers av flere tidsserier, som er den avanserte versjonen av 'TS.Range 'kommando. Den gir også aggregeringsfunksjoner som AVG, First, Last, Sum, Count, etc.
'Ts.Mrange 'kommando kan spørre om rekkevidden fra tidsstempel 1 til tidsstempel n. Samtidig kan det hente data over alle tre tidsserier TS1, TS2 og TS3.
Syntaks
Ts.Mrange starttimestamp endtimestamp
[Filter_by_ts]
[Filter_by_value]
[WithLabels | Utvalgte_labels label1 label2…]
[Count RowCount]
[Aggregation Aggregator]
[Filterfilter]
[Groupby Label]
Parametrene "StartTimestamp" og 'EndTimestamp' spesifiserer området for dataene som skal spørres. Disse to parametrene er obligatoriske. Alle de andre parametrene er valgfrie for kommandoen.
Eksempel - Fetching aksjemarkedsdata
La oss anta en applikasjon i den virkelige verden der vi trenger å lagre de timesalgspriser på tungt omsatte valutapar. Redis tidsseriebibliotek kan brukes til å lagre og manipulere dataene effektivt.
La oss bruke 'TS.Opprett 'kommando for å lage tidsserier per valutapar.
ts.Opprett TS: EUR: USD Labels Type "Forex"
ts.Opprett TS: USD: CHF Labels Type "Crypto"
ts.Opprett TS: USD: JPY -etiketter Type "Forex"
Vi har lagt til en etikett som heter Type for hver av de ovennevnte tidsseriene. Deretter bør vi legge til eksempeldata til ovennevnte tidsserier. 'Ts.Legg til 'Kommando kan brukes.
ts.Legg til TS: EUR: USD * 350
ts.Legg til TS: USD: CHF * 390
ts.Legg til TS: USD: JPY * 490
ts.Legg til TS: EUR: USD * 350.3
ts.Legg til TS: USD: CHF * 390.6
ts.Legg til TS: USD: JPY * 490.4
Produksjon:
'*'Kommanderer Redis -serveren til å bruke den nåværende servertiden som tidsstempel. Du kan se at tidsstempelverdien er returnert av hver kommando. La oss bruke 'TS.Mrange 'kommando for å spørre dataene på tvers av alle tidsserier' der typen er 'Forex' og start- og slutttidstempene er henholdsvis 1655631860414, 1655631909914.
ts.Mrange 1655631860414 1655631909914 Filter type = "Forex"
Produksjon:
Som forventet er det.MRANGE 'Kommando spørret datraer på tvers av begge tidsserier TS: EUR: USD og TS: USD: JPY.
La oss hente dataradene der typen er noe i 'Forex' eller 'Crypto'. Start- og slutttidstempene er de samme som i forrige scenario.
ts.Mrange 1655631860414 1655631909914 Filtertype = (Forex, Crypto)
Produksjon:
Som du ser har kommandoen hentet data fra alle tidsserier som vi har laget tidligere.
Flagget 'WithLabels'
Vi kan bruke 'WithLabels' valgfrie parameter for å vise etikettene i utgangen.
ts.Mrange 1655631860414 1655631909914 WithLabels Filter Type = (Forex, Crypto)
Produksjon:
Flaget 'Filter_By_Value
Dette flagget vil filtrere resultatene basert på området som er spesifisert verdier. Du kan spesifisere en minimums- og maksimumsverdi for dette flagget.
ts.mrange - + filter_by_value 370 490.2 filtertype = (Forex, krypto)
Du kan bruke symbolene '-' og '+' for å indikere minimum og maksimal mulige tidsstempler. I dette eksemplet tar parameteren 'Filter_by_value' verdier 370 og 490.2 som kommandoer Redis -serveren for å spørre tidsseriedataene der verdiene ligger innenfor det spesifiserte området.
Produksjon:
Flaget 'Filter_by_ts'
Du kan filtrere resultatene etter deres eksakte tidsstempelverdi som vist i det følgende.
ts.mrange - + filter_by_ts 1655631873854 filtertype = krypto
I dette tilfellet har vi spesifisert tidsstempelverdien som 1655631873854.
Dette ville filtrere ut de resulterende dataene som vist i det følgende.
Konklusjon
Redis tilbyr tidsserie-databasefunksjoner gjennom sin eksterne Module API. 'TimeseriesModule' kan kobles til den vanlige Redis -butikken ved hjelp av en konfigurasjonsfil eller runtime -kommando. Tidsserie-data kan lagres i 128 biter av biter. 'Ts.Mrange '-kommando brukes til å spørre data på tvers av flere tidsserier. Det er den avanserte versjonen av 'TS.OMRÅDE'. Denne kommandoen tilbyr flere funksjoner som aggregeringer, gruppering, filtrering osv.