Redis XTRIM

Redis Xtrim



Lågnivådetaljer för Redis-strömmar

Redis-strömmar är en tilläggsdatastruktur som ger en uppsättning mycket effektiva läs- och infogningsoperationer med en minneseffektiv lagringsmekanism. Internt använder Redis-strömmarna en Radix-träddatastruktur som är ett utrymmesoptimerat träd med hög minneseffektivitet.

Redis-strömmar lagrar data som en lista med poster där varje post består av nyckel-värdepar. På en låg nivå packas dessa poster i makronoder, som visas i följande.









I den här artikeln fokuserar vi på att ta bort strömposter med XTRIM-kommandot, och det ovan nämnda konceptet påverkar i hög grad effektiviteten i borttagningsoperationen. Vanligtvis är borttagning av Redis-strömposter mycket effektivt om det görs på makronodnivå men inte på ingångsnivå. Denna mekanism implementeras med XTRIM-kommandot som vi kommer att diskutera i följande avsnitt.



XTRIM-kommandot

XTRIM-kommandot används för att stänga av ingångarna i en ström baserat på ett givet tröskelvärde. Tröskeln kan vara ett maximalt antal poster per ström eller ett äldre post-id. XTRIM-kommandot accepterar typen av tröskel som ett kommandoargument. Syntaxen för XTRIM-kommandot är som följer.





XTRIM stream_key MAXLEN | MINID [ = | ~ ] tröskelvärde [ LIMIT antal ]

stream_key : Nyckeln till Redis-strömmen.

MAXLEN : Strömmens maximala längd efter trimning. Alla poster kommer att tas bort som överstiger längden på strömmen, vilket anges av tröskelvärdet. Detta argument är ett positivt heltal.

MINID : Det lägsta ström-ID som ska finnas kvar efter trimning av posterna. Alla poster kommer att tas bort som har ID lägre än det angivna tröskelvärdet. När du anger den här parametern blir tröskeln ett ström-ID.

= operatör : När det anges kommer exakt trimning att utföras baserat på tröskelvärdet.

~ operatör : När det specificeras kommer nästan exakt trimning att utföras baserat på tröskelvärdet och makronodstorleken.

tröskelvärde : Tröskelvärdet baserat på argumentet MAXLEN eller MINID.

LIMIT antal : Det maximala antalet poster som ska tas bort.

Användningsfall 01 – Ta bort strömposter baserat på maximal längd

Låt oss anta att ett turistföretag har en Redis-butik för att hålla reda på turistinformation. Redis streams datastruktur har använts för att lagra varje turists information som nyckel-värdepar. Med tiden har strömmen vuxit, och de planerar att bara behålla de senaste 1000 bidragen. Så de har identifierat den maximala längden på strömmen bör vara 1000 när som helst. XTRIM-kommandot har använts för att uppnå detta.

För demonstrationsändamål skapar vi först en ström med 10 poster enligt följande. XADD-kommandot har använts för att utföra infogningen.

xadd turistinformation * namn jack country italien familjemems 5
xadd turistinformation * namn harry country usa familjemems två
xadd turistinformation * namn nikomita country japan familymems 3
xadd turistinformation * namn zakaria land indien familjemems två
xadd turistinformation * namn redmond country brazil familymems 6
xadd turistinformation * namn hittat land japan familjemems 3
xadd turistinformation * namn maryjohn country usa familymems två
xadd turistinformation * namn Liza land italien familjemems 5
xadd turistinformation * namn nimshikaa country japan familymems 3
xadd turistinformation * namn nisha land italien familjemems 5

Låt oss använda XRANGE-kommandot för att inspektera strömmen turistinformation enligt följande.

xrange turistinfo - +

Produktion:

Som förväntat har de 10 strömposterna visats av detta kommando.

I demonstrationssyfte kommer vi att trimma strömmen där dess maximala längd skulle vara 5.

xtrim turistinfo maxlen 5

Låt oss inspektera strömposterna igen med XRANGE-kommandot.

Som väntat har fem bidrag vräkts från strömmen, och dess längd är 5.

Användningsfall 02 – Ta bort streamposter baserat på stream-ID:n

Låt oss ta ett exempel där ett väderföretag håller reda på väderinformation för en given plats med hjälp av Redis-strömmar. Nu vill de ta bort äldre poster som inte längre behövs. Vi kan använda XTRIM-kommandot med MINID-strategin, som visas i följande.

Först kommer vi att skapa en ström som heter väderinfo och lägga till 5 poster till den enligt följande.

xadd väderinfo * temp 10 fuktighet femtio
xadd väderinfo * temp tjugo fuktighet 70
xadd väderinfo * temp 12 fuktighet 65
xadd väderinfo * temp femton fuktighet 88
xadd väderinfo * temp 18 fuktighet Fyra fem

Produktion:

Låt oss använda XTRIM-kommandot för att ta bort poster som har ID:n lägre än det angivna tröskelvärdet.

xtrim väderinfo MINID 1660485503248 - 0

Det angivna lägsta ID är associerat med den tredje posten. Följaktligen kommer posterna efter den tredje posten som har lägre ID att raderas.

Produktion:

Eftersom vi inte har specificerat argumenten = eller ~ explicit, använder kommandot operatorn = som standard. Därför har den exakta trimningen gjorts i båda användningsfallen. Om du har specificerat ~-operatorn uttryckligen, kommer nästan exakt trimning att göras, som visas i följande.

Som visas i figuren ovan har XTRIM-kommandot använts med ~-operatorn. Vi ber kommandot att ta bort alla poster som överstiger längden 100. Eftersom vi inte tvingar XTRIM-kommandot att göra en exakt trimning, kommer det att fokusera på effektiviteten av trimningsoperationen. Så det kommer inte att ta bort de omedelbara poster som hör till samma makronod. Den kommer att behålla de kommande tre posterna som finns i samma makronod och tar bort alla makronoder efter dem. Det ger en avsevärd prestandaförbättring än i den exakta trimningsmetoden, vilket tvingar kommandot att anstränga sig extra. Samma procedur äger rum när tröskeln baseras på inmatnings-id:erna.

Argumentet LIMIT begränsar antalet avvisade poster från den angivna strömmen, som kan användas för att få lite mer prestandaförbättring.

Slutsats

Kort sagt, XTRIM-kommandot används för att ta bort strömposter baserat på ett tröskelvärde. Typen av tröskelvärde kan ändras med det sammanhang som specificeras med hjälp av MAXLEN och MINID kommandoargumenten. Som diskuterats kan trimningen göras på två sätt där trimningsoperationen kommer att betrakta tröskeln som en exakt eller ungefärlig gräns. Som standard använder kommandot operatorn = som används för exakt trimning. Med ~-operatorn kan du göra en ungefärlig trimning som nämnts i avsnittet ovan. Sammantaget hjälper den ungefärliga trimningsmetoden och LIMIT-argumentet dig att få en avsevärd prestandavinst med XTRIM-kommandot.