Redis XTRIM

Redis Xtrim



Detaljer på lavt niveau om Redis-streams

Redis-streams er en datastruktur, der kun kan tilføjes, og som giver et sæt yderst effektive læse- og indsættelsesoperationer med en hukommelseseffektiv lagringsmekanisme. Internt bruger Redis-strømmene en Radix-trædatastruktur, som er et pladsoptimeret træ med høj hukommelseseffektivitet.

Redis-streams gemmer data som en liste over poster, hvor hver post består af nøgle-værdi-par. På et lavt niveau er disse indgange pakket i makronoder, som vist i det følgende.









I denne artikel fokuserer vi på fjernelse af strømposter ved hjælp af XTRIM-kommandoen, og det ovennævnte koncept påvirker i høj grad effektiviteten af ​​fjernelsesoperationen. Normalt er Redis-strømindgangsfjernelse meget effektiv, hvis det sker på makroknudeniveauet, men ikke på indgangsniveauet. Denne mekanisme er implementeret med XTRIM-kommandoen, som vi vil diskutere i det følgende afsnit.



XTRIM-kommandoen

XTRIM-kommandoen bruges til at afskære indgange i en strøm baseret på en given tærskelværdi. Tærsklen kan være et maksimalt antal poster pr. stream eller et ældre post-id. XTRIM-kommandoen accepterer tærskeltypen som et kommandoargument. Syntaksen for XTRIM-kommandoen er som følger.





XTRIM stream_key MAXLEN | MINID [ = | ~ ] tærskelværdi [ LIMIT antal ]

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

MAXLEN : Den maksimale længde af strømmen efter trimning. Alle indtastninger vil blive fjernet, der overstiger længden af ​​strømmen, som er specificeret af tærskelværdien. Dette argument er et positivt heltal.

MINID : Det mindste stream-id, der skal forblive efter trimning af posterne. Alle poster vil blive fjernet, der har ID'er lavere end den angivne tærskel. Når du angiver denne parameter, bliver tærsklen et stream-id.

= operatør : Når det er angivet, udføres nøjagtig trimning baseret på tærskelværdien.

~ operatør : Når det er angivet, udføres næsten nøjagtig trimning baseret på tærskelværdien og makroknudestørrelsen.

tærskelværdi : Tærskelværdien baseret på argumentet MAXLEN eller MINID.

LIMIT antal : Det maksimale antal poster, der skal fjernes.

Use Case 01 – Fjernelse af stream-indgange baseret på maksimal længde

Lad os antage, at en turistvirksomhed har en Redis-butik for at holde styr på turistinformation. Redis streams datastruktur er blevet brugt til at gemme hver turists information som nøgleværdi-par. Med tiden er strømmen vokset, og de planlægger kun at beholde de seneste 1000 poster. Så de har identificeret den maksimale længde af streamen bør være 1000 til enhver tid. XTRIM-kommandoen er blevet brugt til at opnå dette.

Til demonstrationsformål vil vi først oprette en strøm med 10 poster som følger. XADD-kommandoen er blevet brugt til at udføre indsættelsen.

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

Lad os bruge XRANGE-kommandoen til at inspicere stream-turistinformationen som følger.

xrange turistinfo - +

Produktion:

Som forventet er de 10 strømposter blevet vist med denne kommando.

Til demonstrationsformål trimmer vi strømmen, hvor dens maksimale længde ville være 5.

xtrim turistinfo maxlen 5

Lad os inspicere stream-posterne igen med XRANGE-kommandoen.

Som forventet er fem poster blevet smidt ud af åen, og dens længde er 5.

Use Case 02 – Fjernelse af stream-indgange baseret på stream-id'er

Lad os tage et eksempel, hvor et vejrselskab holder styr på vejrinformationer for en given placering ved hjælp af Redis-strømme. Nu vil de slette ældre poster, der ikke længere er nødvendige. Vi kan bruge XTRIM-kommandoen ved at bruge MINID-strategien, som vist i det følgende.

Først vil vi oprette en strøm kaldet vejrinfo og tilføje 5 poster til den som følger.

xadd vejrinfo * Midlertidig 10 fugtighed halvtreds
xadd vejrinfo * Midlertidig tyve fugtighed 70
xadd vejrinfo * Midlertidig 12 fugtighed 65
xadd vejrinfo * Midlertidig femten fugtighed 88
xadd vejrinfo * Midlertidig 18 fugtighed Fire, fem

Produktion:

Lad os bruge XTRIM-kommandoen til at fjerne de poster, der har ID'er lavere end den angivne tærskelværdi.

xtrim vejrinfo MINID 1660485503248 - 0

Det angivne minimum-id er knyttet til den tredje post. Derfor vil de poster efter den tredje post, som har lavere id'er, blive slettet.

Produktion:

Da vi ikke har specificeret = eller ~ argumenterne eksplicit, bruger kommandoen = operatoren som standard. Derfor er den nøjagtige trimning blevet udført i begge anvendelsestilfælde. Hvis du har angivet ~-operatøren eksplicit, vil der blive udført næsten nøjagtig trimning, som vist i det følgende.

Som vist i ovenstående figur er XTRIM-kommandoen blevet brugt med ~-operatoren. Vi beder kommandoen om at fjerne alle indtastninger, der overstiger længden på 100. Da vi ikke tvinger XTRIM-kommandoen til at udføre en nøjagtig trimning, vil den fokusere på effektiviteten af ​​trimningsoperationen. Så det vil ikke fjerne de umiddelbare poster, der hører til den samme makro-node. Det vil beholde de næste tre poster, der er i den samme makro-node og vil fjerne alle makro-noder efter dem. Det giver en betydelig forbedring af ydeevnen end i den nøjagtige trimningstilgang, hvilket tvinger kommandoen til at yde en ekstra indsats. Den samme procedure finder sted, når tærsklen er baseret på indtastnings-id'erne.

Argumentet LIMIT begrænser antallet af smidte poster fra den angivne strøm, som kan bruges til at opnå en smule mere ydeevneforbedring.

Konklusion

Kort sagt bruges XTRIM-kommandoen til at fjerne stream-indgange baseret på en tærskelværdi. Typen af ​​tærskelværdien kan ændres med den kontekst, der specificeres ved hjælp af MAXLEN- og MINID-kommandoargumenterne. Som diskuteret kan trimningen udføres på to måder, hvor trimningsoperationen vil betragte tærsklen som en nøjagtig eller omtrentlig grænse. Som standard bruger kommandoen = operatoren, der bruges til nøjagtig trimning. Med ~-operatoren kan du foretage en omtrentlig trimning som nævnt i ovenstående afsnit. Samlet set hjælper den omtrentlige trimningstilgang og LIMIT-argumentet dig med at opnå en betydelig ydelsesforøgelse med XTRIM-kommandoen.