Redis XTRIM

Redis Xtrim



Pojedinosti niske razine Redis streamova

Redis tokovi su podatkovna struktura samo za dodavanje koja pruža skup vrlo učinkovitih operacija čitanja i umetanja s mehanizmom za pohranu koji učinkovito štedi memoriju. Interno, Redis tokovi koriste strukturu podataka Radix stabla koja je stablo optimizirano za prostor s visokom memorijskom učinkovitošću.

Redis streamovi pohranjuju podatke kao popis unosa gdje se svaki unos sastoji od parova ključ-vrijednost. Na niskoj razini, ti su unosi pakirani u makro-čvorove, kao što je prikazano u nastavku.









U ovom članku fokusiramo se na uklanjanje unosa toka pomoću naredbe XTRIM, a gore spomenuti koncept usko utječe na učinkovitost operacije uklanjanja. Obično je Redis uklanjanje unosa toka vrlo učinkovito ako se radi na razini makro-čvora, ali ne i na ulaznoj razini. Ovaj mehanizam implementiran je naredbom XTRIM o kojoj ćemo raspravljati u sljedećem odjeljku.



Naredba XTRIM

Naredba XTRIM koristi se za odsijecanje unosa toka na temelju zadane vrijednosti praga. Prag može biti maksimalni broj unosa po toku ili stariji ID unosa. Naredba XTRIM prihvaća vrstu praga kao argument naredbe. Sintaksa naredbe XTRIM je sljedeća.





XTRIM stream_key MAXLEN | MINID [ = | ~ ] vrijednost_praga [ OGRANIČENI broj ]

ključ_potoka : Ključ Redis streama.

MAXLEN : Maksimalna duljina streama nakon skraćivanja unosa. Bit će uklonjeni svi unosi koji premašuju duljinu streama, koja je određena vrijednošću praga. Ovaj argument je pozitivan cijeli broj.

MINID : Minimalni ID toka koji bi trebao ostati nakon skraćivanja unosa. Uklonit će se svi unosi koji imaju ID niže od navedenog praga. Kad god navedete ovaj parametar, prag postaje ID toka.

= operator : Kada je navedeno, izvršit će se točno podrezivanje na temelju vrijednosti praga.

~ operator : Kada je navedeno, izvršit će se gotovo točno skraćivanje na temelju vrijednosti praga i veličine makro-čvora.

vrijednost_praga : Vrijednost praga temeljena na argumentu MAXLEN ili MINID.

OGRANIČENI broj : Maksimalni broj unosa koje treba ukloniti.

Slučaj upotrebe 01 – Uklanjanje unosa toka na temelju maksimalne duljine

Pretpostavimo da turistička tvrtka održava Redis trgovinu kako bi pratila turističke informacije. Struktura podataka Redis streams korištena je za pohranu informacija svakog turista kao parova ključ-vrijednost. S vremenom je stream rastao, a planiraju zadržati samo zadnjih 1000 unosa. Stoga su utvrdili da bi maksimalna duljina streama trebala biti 1000 u bilo kojem trenutku. Da bi se to postiglo korištena je naredba XTRIM.

U svrhu demonstracije, prvo ćemo stvoriti stream s 10 unosa kako slijedi. Za izvođenje umetanja korištena je naredba XADD.

xadd turističke informacije * ime jack zemlja italija obiteljske uspomene 5
xadd turističke informacije * ime harry zemlja SAD obiteljske uspomene dva
xadd turističke informacije * ime nikomita država japan obiteljske uspomene 3
xadd turističke informacije * ime Zakaria zemlja Indija obiteljske uspomene dva
xadd turističke informacije * ime redmond zemlja brazil obiteljske uspomene 6
xadd turističke informacije * pronađeno ime zemlja japan obiteljske uspomene 3
xadd turističke informacije * ime maryjohn zemlja usa obiteljske uspomene dva
xadd turističke informacije * ime liza zemlja italija obiteljske uspomene 5
xadd turističke informacije * ime nimshikaa država Japan obiteljske uspomene 3
xadd turističke informacije * ime nisha zemlja italija obiteljske uspomene 5

Upotrijebimo naredbu XRANGE za pregled streama touristinfo na sljedeći način.

xrange turističke informacije - +

Izlaz:

Kao što je i očekivano, ovom naredbom prikazano je 10 unosa toka.

U svrhu demonstracije, skraćivat ćemo tok gdje bi njegova najveća duljina bila 5.

xtrim turističke informacije maxlen 5

Ponovno pregledajmo unose toka s naredbom XRANGE.

Kao što je i očekivano, pet unosa je izbačeno iz streama, a njegova duljina je 5.

Slučaj upotrebe 02 – Uklanjanje unosa toka na temelju ID-ova toka

Uzmimo primjer gdje meteorološka tvrtka prati podatke o vremenu za određenu lokaciju pomoću Redisovih tokova. Sada žele izbrisati starije unose koji više nisu potrebni. Možemo koristiti naredbu XTRIM pomoću strategije MINID, kao što je prikazano u nastavku.

Prvo ćemo kreirati stream pod nazivom weatherinfo i dodati mu 5 unosa kako slijedi.

xdodaj vremensku prognozu * temp 10 vlažnost pedeset
xdodaj vremensku prognozu * temp dvadeset vlažnost 70
xdodaj vremensku prognozu * temp 12 vlažnost 65
xdodaj vremensku prognozu * temp petnaest vlažnost 88
xdodaj vremensku prognozu * temp 18 vlažnost Četiri pet

Izlaz:

Upotrijebimo naredbu XTRIM za uklanjanje unosa čiji su ID-ovi niži od navedene vrijednosti praga.

xtrim weatherinfo MINID 1660485503248 - 0

Minimalni navedeni ID povezan je s trećim unosom. Stoga će se izbrisati unosi nakon trećeg unosa koji imaju niže ID-ove.

Izlaz:

Budući da nismo eksplicitno naveli argumente = ili ~, naredba prema zadanim postavkama koristi operator =. Stoga je u oba slučaja upotrebe izvršeno točno obrezivanje. Ako ste eksplicitno naveli operator ~, izvršit će se gotovo točno skraćivanje, kao što je prikazano u nastavku.

Kao što je prikazano na gornjoj slici, naredba XTRIM korištena je s operatorom ~. Od naredbe tražimo da ukloni sve unose koji prelaze duljinu od 100. Budući da naredbu XTRIM ne prisiljavamo na točno rezanje, ona će se usredotočiti na učinkovitost operacije skraćivanja. Dakle, neće ukloniti neposredne unose koji pripadaju istom makro-čvoru. Zadržat će sljedeća tri unosa koji su u istom makro-čvoru i uklonit će sve makro-čvorove nakon njih. Omogućuje značajno poboljšanje performansi u odnosu na pristup točnog podrezivanja, što prisiljava naredbu na dodatni napor. Ista se procedura odvija kada se prag temelji na ID-ovima unosa.

Argument LIMIT ograničava broj izbačenih unosa iz navedenog toka, što se može koristiti za malo bolje poboljšanje performansi.

Zaključak

Ukratko, naredba XTRIM koristi se za uklanjanje unosa toka na temelju vrijednosti praga. Vrsta vrijednosti praga može se mijenjati s kontekstom koji se navodi pomoću argumenata naredbe MAXLEN i MINID. Kao što je spomenuto, skraćivanje se može izvesti na dva načina gdje će operacija skraćivanja uzeti u obzir prag kao točnu ili približnu granicu. Prema zadanim postavkama, naredba koristi operator = koji se koristi za točno rezanje. Pomoću operatora ~ možete izvesti približno skraćivanje kao što je spomenuto u gornjem odjeljku. Sveukupno, pristup približnog skraćivanja i argument LIMIT pomažu vam da postignete značajan dobitak performansi s naredbom XTRIM.