Detaljer om redis-strømmer på lavt nivå
Redis Streams er en datastruktur for bare appendinger som gir et sett med svært effektive lese- og setter inn operasjoner med en minneeffektiv lagringsmekanisme. Internt bruker Redis-strømmene en Radix Tree Data Structure som er et romoptimalisert tre med høy hukommelseseffektivitet.
Redis strømmer lagrer data som en liste over oppføringer der hver oppføring består av nøkkelverdipar. På et lavt nivå er disse oppføringene pakket i makro-noder, som vist på 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 effektiviteten i fjerningsoperasjonen. Vanligvis er fjerning av Redis Stream-innganger veldig effektiv hvis det gjøres på makro-node-nivå, men ikke på inngangsnivå. Denne mekanismen implementeres med XTRIM -kommandoen som vi vil diskutere i følgende avsnitt.
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 inngangs -ID. XTRIM -kommandoen godtar typen terskel som et kommandoargument. Syntaksen til Xtrim -kommandoen er som følger.
XTRIM Stream_key Maxlen | Minid [= | ~] TRESHOLD_VALUE [Limit Count]
Stream_key: Nøkkelen til Redis -strømmen.
Maxlen: Maksimal lengde på strømmen etter trimming oppføringer. Alle oppføringene vil bli fjernet som overstiger lengden på strømmen, som er spesifisert av terskelverdien. Dette argumentet er et positivt heltall.
Minid: Minimumsstrøm -IDen som skal forbli etter å ha trimmet oppføringene. Alle oppføringene blir fjernet som har ID -er lavere enn den spesifiserte terskelen. Når du spesifiserer denne parameteren, blir terskelen en strøm -ID.
= operatør: Når det er spesifisert, vil nøyaktig trimming bli utført basert på terskelverdien.
~ operatør: Når den er spesifisert, vil nesten eksakt trimming bli utført basert på terskelverdien og makro-node-størrelsen.
grenseverdi: Terskelverdien basert på argumentet Maxlen eller Minid.
Begrensningstall: Maksimalt antall oppføringer som skal fjernes.
Bruk sak 01 - Fjerne strømoppføringer basert på maksimal lengde
La oss anta at et reiselivsselskap opprettholder en Redis -butikk for å holde oversikt over turistinformasjon. Redis Streams datastruktur har blitt brukt til å lagre hver turists informasjon som nøkkelverdipar. Med tiden har strømmen vokst, og de planlegger å holde bare de siste 1000 oppføringene. Så de har identifisert den maksimale lengden på strømmen skal 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 innsetting.
XADD TOURISTINFO * Navn Jack Country Italy FamilyMems 5
XADD TOURISTINFO * Navn Harry Country USA FamilyMems 2
XADD TOURISTINFO * Navn Nikomita Country Japan FamilyMems 3
XADD TOURISTINFO * Navn Zakaria Country India FamilyMems 2
XADD TOURISTINFO * Navn Redmond Country Brazil FamilyMems 6
XADD TOURISTINFO * Navn Nakita Country Japan FamilyMems 3
XADD TOURISTINFO * Navn MaryJohn Country USA FamilyMems 2
XADD TOURISTINFO * Navn Liza Country Italia FamilyMems 5
XADD TOURISTINFO * Navn Nimshikaa Country Japan FamilyMems 3
XADD TOURISTINFO * NAVN NISHA LAND Italia FamilyMems 5
La oss bruke Xrange -kommandoen til å inspisere strømmen turistinfo 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 maksimal lengde ville være 5.
XTRIM TOURISTINFO MAXLEN 5
La oss inspisere strømoppføringene igjen med Xrange -kommandoen.
Som forventet har fem oppføringer blitt kastet ut fra strømmen, og lengden er 5.
Bruk sak 02 - Fjerne strømoppføringer basert på strøm -ID -er
La oss ta et eksempel der et værfirma holder oversikt over værinformasjon om et gitt sted ved hjelp av Redis Streams. Nå vil de slette eldre oppføringer som ikke lenger er nødvendig. Vi kan bruke XTRIM -kommandoen ved hjelp av minidstrategien, som vist i det følgende.
Først skal vi lage en strøm som heter WeatherInfo og legge til 5 oppføringer til den som følger.
XADD WeatherInfo * Temp 10 Fuktighet 50
Xadd WeatherInfo * Temp 20 Fuktighet 70
Xadd WeatherInfo * Temp 12 Fuktighet 65
XADD WeatherInfo * Temp 15 Fuktighet 88
XADD WeatherInfo * Temp 18 Fuktighet 45
Produksjon:
La oss bruke XTRIM -kommandoen for å fjerne oppføringene som har ID -er lavere enn den spesifiserte terskelverdien.
Xtrim WeatherInfo Minid 1660485503248-0
Minimums -ID -spesifisert er tilknyttet den tredje oppføringen. Derfor vil oppføringene etter den tredje oppføringen som har lavere ID -er bli slettet.
Produksjon:
Siden vi ikke har spesifisert = eller ~ argumenter eksplisitt, bruker kommandoen = operatøren som standard. Derfor er den eksakte trimming blitt gjort i begge brukssaker. Hvis du har spesifisert ~ operatøren eksplisitt, vil nesten eksakt trimming bli gjort, som vist i det følgende.
Som vist i figuren ovenfor, har XTRIM -kommandoen blitt brukt med ~ operatøren. Vi ber kommandoen fjerne alle oppføringene som overstiger lengden på 100. Siden vi ikke tvinger Xtrim -kommandoen til å gjøre en nøyaktig trimming, vil den fokusere på effektiviteten av trimmingsoperasjonen. Så det vil ikke fjerne de umiddelbare oppføringene som tilhører samme makro-node. Det vil holde de neste tre oppføringene som er i samme makro-node og vil fjerne alle makronodene etter dem. Det gir en betydelig mengde ytelsesforbedring enn i den nøyaktige trimmingstilnærmingen, noe som tvinger kommandoen til å legge inn den ekstra innsatsen. Den samme prosedyren finner sted når terskelen er basert på oppførings -ID -ene.
Grense -argumentet begrenser antall utviste oppføringer fra den spesifiserte strømmen, som kan brukes til å få litt mer ytelsesforbedring.
Konklusjon
Kort sagt, XTRIM -kommandoen brukes til å fjerne strømoppføringer basert på en terskelverdi. Type terskelverdien kan endres med konteksten som spesifiseres ved hjelp av Maxlen og Minid -kommando -argumentene. Som diskutert, kan trimming gjøres på to måter der trimmoperasjonen vil betrakte terskelen som en nøyaktig eller omtrentlig grense. Som standard bruker kommandoen den = operatøren som brukes til nøyaktig trimming. Med ~ operatøren kan du gjøre en omtrentlig trimming som nevnt i delen ovenfor. Totalt sett hjelper den omtrentlige trimmingstilnærmingen og grenseargumentet deg til å få en betydelig ytelsesgevinst med XTRIM -kommandoen.