Redis XTRIM

Redis Xtrim



Detaljer på lavt nivå om Redis-strømmer

Redis-strømmer er en kun vedleggsdatastruktur som gir et sett med svært effektive lese- og innsettingsoperasjoner med en minneeffektiv lagringsmekanisme. Internt bruker Redis-strømmene en Radix-tredatastruktur som er et plassoptimalisert tre med høy minneeffektivitet.

Redis-strømmer lagrer data som en liste over oppføringer der hver oppføring består av nøkkel-verdi-par. På et lavt nivå er disse oppføringene pakket inn i makronoder, som vist i det følgende.









I denne artikkelen fokuserer vi på fjerning av strømoppføringer ved hjelp av XTRIM-kommandoen, og det ovennevnte konseptet påvirker i stor grad effektiviteten til fjerningsoperasjonen. Vanligvis er Redis-strømoppføringsfjerning veldig effektiv hvis det gjøres på makronodenivå, men ikke på inngangsnivå. Denne mekanismen er implementert med XTRIM-kommandoen som vi skal diskutere i den følgende delen.



XTRIM-kommandoen

XTRIM-kommandoen brukes til å kutte av oppføringene til en strøm basert på en gitt terskelverdi. Terskelen kan være et maksimalt antall oppføringer per strøm eller en eldre oppførings-ID. XTRIM-kommandoen godtar typen terskel som et kommandoargument. Syntaksen til XTRIM-kommandoen er som følger.





XTRIM stream_key MAXLEN | MINID [ = | ~ ] grenseverdi [ LIMIT antall ]

stream_key : Nøkkelen til Redis-strømmen.

MAXLEN : Maksimal lengde på bekken etter trimming. Alle oppføringer som overstiger lengden på strømmen, som er spesifisert av terskelverdien, vil bli fjernet. Dette argumentet er et positivt heltall.

MINID : Minimum strøm-ID som skal forbli etter trimming av oppføringene. Alle oppføringer vil bli fjernet som har IDer lavere enn den angitte terskelen. Hver gang du angir denne parameteren, blir terskelen en strøm-ID.

= operatør : Når spesifisert, vil nøyaktig trimming utføres basert på terskelverdien.

~ operatør : Når spesifisert, vil nesten nøyaktig trimming utføres basert på terskelverdien og makronodens størrelse.

grenseverdi : Terskelverdien basert på argumentet MAXLEN eller MINID.

LIMIT antall : Maksimalt antall oppføringer som skal fjernes.

Use Case 01 – Fjerning av strømoppføringer basert på maksimal lengde

La oss anta at et reiselivsselskap har en Redis-butikk for å holde styr på turistinformasjon. Redis streams-datastrukturen har blitt brukt til å lagre hver turists informasjon som nøkkelverdi-par. Med tiden har strømmen vokst, og de planlegger å beholde bare de siste 1000 oppføringene. Så de har identifisert den maksimale lengden på strømmen bør være 1000 når som helst. XTRIM-kommandoen har blitt brukt for å oppnå dette.

For demonstrasjonsformål vil vi først lage en strøm med 10 oppføringer som følger. XADD-kommandoen har blitt brukt til å utføre innsettingen.

xadd turistinfo * navn jack country italia familiemems 5
xadd turistinfo * navn harry country usa familiemems to
xadd turistinfo * navn nikomita country japan familymems 3
xadd turistinfo * navn zakaria land india familiemems to
xadd turistinfo * navn redmond country brazil familiemems 6
xadd turistinfo * navn funnet land japan familiemems 3
xadd turistinfo * navn maryjohn country usa familiemems to
xadd turistinfo * navn liza land italia familiemems 5
xadd turistinfo * navn nimshikaa country japan familymems 3
xadd turistinfo * navn nisha land italia familiemems 5

La oss bruke XRANGE-kommandoen til å inspisere turistinformasjonen for strømmen som følger.

xrange turistinfo - +

Produksjon:

Som forventet har de 10 strømoppføringene blitt vist av denne kommandoen.

For demonstrasjonsformål vil vi trimme strømmen der dens maksimale lengde vil være 5.

xtrim turistinfo maxlen 5

La oss inspisere strømoppføringene igjen med XRANGE-kommandoen.

Som forventet har fem oppføringer blitt kastet ut av strømmen, og lengden er 5.

Use Case 02 – Fjerning av strømoppføringer basert på strøm-ID-er

La oss ta et eksempel der et værselskap holder styr på værinformasjon for et gitt sted ved å bruke Redis-strømmer. Nå ønsker de å slette eldre oppføringer som ikke lenger er nødvendige. Vi kan bruke XTRIM-kommandoen ved å bruke MINID-strategien, som vist i det følgende.

Først vil vi lage en strøm kalt værinfo og legge til 5 oppføringer til den som følger.

xadd værinfo * temp 10 luftfuktighet femti
xadd værinfo * temp tjue luftfuktighet 70
xadd værinfo * temp 12 luftfuktighet 65
xadd værinfo * temp femten luftfuktighet 88
xadd værinfo * temp 18 luftfuktighet Fire fem

Produksjon:

La oss bruke XTRIM-kommandoen til å fjerne oppføringene som har IDer lavere enn den angitte terskelverdien.

xtrim værinfo MINID 1660485503248 - 0

Minimums-ID-en som er spesifisert, er knyttet til den tredje oppføringen. Derfor vil oppføringene etter den tredje oppføringen som har lavere IDer bli slettet.

Produksjon:

Siden vi ikke har spesifisert = eller ~-argumentene eksplisitt, bruker kommandoen =-operatoren som standard. Derfor er den nøyaktige trimmingen gjort i begge brukstilfellene. Hvis du har spesifisert ~-operatøren eksplisitt, vil nesten nøyaktig trimming bli utført, som vist i det følgende.

Som vist i figuren ovenfor, har XTRIM-kommandoen blitt brukt med ~-operatoren. Vi ber kommandoen om å fjerne alle oppføringene som overskrider lengden på 100. Siden vi ikke tvinger XTRIM-kommandoen til å utføre en nøyaktig trimming, vil den fokusere på effektiviteten av trimmeoperasjonen. Så det vil ikke fjerne de umiddelbare oppføringene som tilhører den samme makronoden. Den vil beholde de tre neste oppføringene som er i samme makro-node og vil fjerne alle makro-nodene etter dem. Det gir en betydelig mengde ytelsesforbedring enn i den eksakte trimmingstilnærmingen, noe som tvinger kommandoen til å anstrenge seg ekstra. Den samme prosedyren finner sted når terskelen er basert på oppførings-IDene.

Argumentet LIMIT begrenser antall utkastede oppføringer fra den spesifiserte strømmen, som kan brukes til å oppnå litt mer ytelsesforbedring.

Konklusjon

Kort sagt, XTRIM-kommandoen brukes til å fjerne strømoppføringer basert på en terskelverdi. Type terskelverdi kan endres med konteksten som spesifiseres ved å bruke kommandoargumentene MAXLEN og MINID. Som diskutert kan trimmingen gjøres på to måter der trimmingen vil vurdere terskelen som en eksakt eller omtrentlig grense. Som standard bruker kommandoen =-operatoren som brukes til nøyaktig trimming. Med ~-operatoren kan du gjøre en omtrentlig trimming som nevnt i avsnittet ovenfor. Totalt sett hjelper den omtrentlige trimmingsmetoden og LIMIT-argumentet deg til å oppnå en betydelig ytelsesforsterkning med XTRIM-kommandoen.