Redis XTRIM

Redis Xtrim



A Redis Streams alacsony szintű részletei

A Redis adatfolyamok csak hozzáfűzést biztosító adatszerkezetek, amelyek rendkívül hatékony olvasási és beillesztési műveleteket biztosítanak memória-hatékony tárolási mechanizmussal. Belsőleg a Redis adatfolyamok Radix-fa adatstruktúrát használnak, amely egy helyoptimalizált fa nagy memóriahatékonysággal.

A Redis adatfolyamok bejegyzéslistaként tárolják az adatokat, ahol minden bejegyzés kulcs-érték párokból áll. Alacsony szinten ezek a bejegyzések makrócsomópontokba vannak csomagolva, amint az alábbiakban látható.









Ebben a cikkben a folyambejegyzések XTRIM paranccsal történő eltávolítására összpontosítunk, és a fent említett koncepció szorosan befolyásolja az eltávolítási művelet hatékonyságát. Általában a Redis adatfolyam bejegyzés eltávolítása nagyon hatékony, ha a makrócsomópont szintjén történik, de nem a belépési szinten. Ez a mechanizmus az XTRIM paranccsal valósul meg, amelyet a következő részben tárgyalunk.



Az XTRIM parancs

Az XTRIM parancs egy adatfolyam bejegyzéseinek levágására szolgál egy adott küszöbérték alapján. A küszöb lehet a bejegyzések maximális száma adatfolyamonként vagy egy régebbi bejegyzésazonosító. Az XTRIM parancs elfogadja a küszöb típusát parancsargumentumként. Az XTRIM parancs szintaxisa a következő.





XTRIM stream_key MAXLEN | MINID [ = | ~ ] küszöb_érték [ LIMIT szám ]

stream_key : A Redis patak kulcsa.

MAXLEN : Az adatfolyam maximális hossza a bejegyzések kivágása után. Az összes olyan bejegyzés eltávolításra kerül, amely meghaladja a stream küszöbérték által meghatározott hosszát. Ez az argumentum pozitív egész szám.

MINID : A minimális adatfolyam-azonosító, amelynek meg kell maradnia a bejegyzések kivágása után. A rendszer eltávolítja az összes olyan bejegyzést, amelynek azonosítója alacsonyabb a megadott küszöbértéknél. Amikor megadja ezt a paramétert, a küszöbérték folyamazonosítóvá válik.

= operátor : Ha meg van adva, a küszöbérték alapján pontos vágás történik.

~ operátor : Ha meg van adva, a küszöbérték és a makrócsomópont mérete alapján csaknem pontos vágás történik.

küszöb_érték : A MAXLEN vagy MINID argumentumon alapuló küszöbérték.

LIMIT szám : Az eltávolítandó bejegyzések maximális száma.

01. használati eset – Stream-bejegyzések eltávolítása a maximális hossz alapján

Tételezzük fel, hogy egy turisztikai cég Redis üzletet tart fenn a turisztikai információk nyomon követésére. A Redis adatfolyamok adatstruktúráját az egyes turisták információinak kulcs-érték párokként való tárolására használták. Idővel a stream nőtt, és azt tervezik, hogy csak a legújabb 1000 bejegyzést tartják meg. Tehát megállapították, hogy a folyam maximális hossza 1000 lehet bármikor. Ennek eléréséhez az XTRIM parancsot használták.

Demonstrációs célból először egy 10 bejegyzésből álló adatfolyamot hozunk létre az alábbiak szerint. Az XADD parancsot használták a beillesztés végrehajtására.

xadd turisztikai információ * neved jack country olaszország familymems 5
xadd turisztikai információ * neved Harry country usa familymems két
xadd turisztikai információ * név nikomita ország japán családtagok 3
xadd turisztikai információ * neve zakaria ország india familymems két
xadd turisztikai információ * név redmond country brazil familymems 6
xadd turisztikai információ * név talált ország japán családtagok 3
xadd turisztikai információ * név maryjohn country usa familymems két
xadd turisztikai információ * neve Liza ország olaszország családtagjai 5
xadd turisztikai információ * név nimshikaa ország japán családtagok 3
xadd turisztikai információ * név nisha ország olaszország familymems 5

Használjuk az XRANGE paranccsal a turisztikai információfolyam ellenőrzését az alábbiak szerint.

xrange turisztikai info - +

Kimenet:

Ahogy az várható volt, ez a parancs a 10 adatfolyam-bejegyzést jelenítette meg.

Demonstrációs célból megvágjuk a patakot, ahol annak maximális hossza 5 lehet.

xtrim turisztikai info maxlen 5

Vizsgáljuk meg újra a stream bejegyzéseket az XRANGE paranccsal.

A várakozásoknak megfelelően öt belépőt sikerült kiszorítani a patakból, hossza pedig 5.

02. használati eset – Stream-bejegyzések eltávolítása adatfolyamazonosítók alapján

Vegyünk egy példát, ahol egy időjárási társaság Redis streamek segítségével nyomon követi egy adott hely időjárási információit. Most törölni akarják a régebbi bejegyzéseket, amelyekre már nincs szükség. Használhatjuk az XTRIM parancsot a MINID stratégiával, ahogy az alábbiakban látható.

Először is létrehozunk egy weatherinfo nevű adatfolyamot, és 5 bejegyzést adunk hozzá az alábbiak szerint.

xadd időjárásinformáció * hőm 10 páratartalom ötven
xadd időjárásinformáció * hőm húsz páratartalom 70
xadd időjárásinformáció * hőm 12 páratartalom 65
xadd időjárásinformáció * hőm tizenöt páratartalom 88
xadd időjárásinformáció * hőm 18 páratartalom Négy öt

Kimenet:

Használjuk az XTRIM parancsot a megadott küszöbértéknél alacsonyabb azonosítójú bejegyzések eltávolítására.

xtrim weatherinfo MINID 1660485503248 - 0

A megadott minimális azonosító a harmadik bejegyzéshez van társítva. Így a harmadik bejegyzés utáni, alacsonyabb azonosítójú bejegyzések törlődnek.

Kimenet:

Mivel nem adtuk meg kifejezetten az = vagy ~ argumentumot, a parancs alapértelmezés szerint az = operátort használja. Ezért a pontos vágás mindkét felhasználási esetben megtörtént. Ha kifejezetten megadta a ~ operátort, akkor csaknem pontos vágás történik, amint az a következőkben látható.

Ahogy a fenti ábrán látható, az XTRIM parancsot a ~ operátorral használták. Megkérjük a parancsot, hogy távolítson el minden olyan bejegyzést, amely meghaladja a 100-as hosszt. Mivel nem kényszerítjük az XTRIM parancsot a pontos vágás elvégzésére, a vágási művelet hatékonyságára összpontosít. Tehát nem távolítja el azokat az azonnali bejegyzéseket, amelyek ugyanahhoz a makrócsomóponthoz tartoznak. Megtartja a következő három bejegyzést, amelyek ugyanabban a makrócsomópontban vannak, és eltávolítja az utánuk lévő összes makrócsomópontot. Jelentős mértékben javítja a teljesítményt, mint a pontos vágási megközelítés, ami extra erőfeszítésre kényszeríti a parancsot. Ugyanez az eljárás megy végbe, amikor a küszöbérték a belépési azonosítókon alapul.

A LIMIT argumentum korlátozza a megadott adatfolyamból kilakoltatott bejegyzések számát, amivel egy kicsit nagyobb teljesítményjavulás érhető el.

Következtetés

Röviden, az XTRIM paranccsal egy küszöbérték alapján távolíthatók el az adatfolyam-bejegyzések. A küszöbérték típusa a MAXLEN és MINID parancsargumentumok segítségével megadható kontextussal módosítható. Amint már említettük, a vágás kétféleképpen történhet, ahol a vágási művelet a küszöbértéket pontos vagy hozzávetőleges határértéknek tekinti. Alapértelmezés szerint a parancs a = operátort használja, amely a pontos kivágáshoz használatos. A ~ operátorral hozzávetőleges vágást végezhet a fenti részben leírtak szerint. Összességében a hozzávetőleges vágási megközelítés és a LIMIT argumentum segítségével jelentős teljesítménynövekedést érhet el az XTRIM paranccsal.