Redis XTRIM

Redis Xtrim



Detalii la nivel scăzut ale fluxurilor Redis

Fluxurile Redis sunt o structură de date numai de atașare care oferă un set de operațiuni de citire și inserare extrem de eficiente, cu un mecanism de stocare eficient din punct de vedere al memoriei. Pe plan intern, fluxurile Redis folosesc o structură de date arbore Radix, care este un arbore optimizat pentru spațiu, cu o eficiență ridicată a memoriei.

Fluxurile Redis stochează date ca o listă de intrări în care fiecare intrare constă din perechi cheie-valoare. La un nivel scăzut, aceste intrări sunt împachetate în macro-noduri, după cum se arată în continuare.









În acest articol, ne concentrăm pe eliminarea intrărilor de flux folosind comanda XTRIM, iar conceptul menționat mai sus afectează îndeaproape eficiența operației de eliminare. De obicei, eliminarea intrării în fluxul Redis este foarte eficientă dacă se face la nivel de macro-nod, dar nu la nivel de intrare. Acest mecanism este implementat cu comanda XTRIM pe care o vom discuta în secțiunea următoare.



Comanda XTRIM

Comanda XTRIM este folosită pentru a tăia intrările unui flux pe baza unei valori de prag date. Pragul poate fi un număr maxim de intrări per flux sau un ID de intrare mai vechi. Comanda XTRIM acceptă tipul de prag ca argument al comenzii. Sintaxa comenzii XTRIM este următoarea.





XTRIM stream_key MAXLEN | MINID [ = | ~ ] valoare_prag [ număr LIMIT ]

stream_key : Cheia pârâului Redis.

MAXLEN : Lungimea maximă a fluxului după tăierea intrărilor. Vor fi eliminate toate intrările care depășesc lungimea fluxului, care este specificată de valoarea pragului. Acest argument este un număr întreg pozitiv.

MINID : ID-ul de flux minim care ar trebui să rămână după tăierea intrărilor. Vor fi eliminate toate intrările care au ID-uri mai mici decât pragul specificat. Ori de câte ori specificați acest parametru, pragul devine un ID de flux.

= operator : Când este specificat, tăierea exactă va fi efectuată pe baza valorii de prag.

~ operator : Când este specificat, tăierea aproape exactă va fi efectuată pe baza valorii pragului și a dimensiunii macronodului.

valoare_prag : Valoarea prag bazată pe argumentul MAXLEN sau MINID.

număr LIMIT : Numărul maxim de intrări care trebuie eliminate.

Cazul de utilizare 01 – Eliminarea intrărilor de flux pe baza lungimii maxime

Să presupunem că o companie de turism deține un magazin Redis pentru a ține evidența informațiilor turistice. Structura de date a fluxurilor Redis a fost folosită pentru a stoca informațiile fiecărui turist ca perechi cheie-valoare. Cu timpul, fluxul a crescut și intenționează să păstreze doar ultimele 1000 de intrări. Deci, au identificat că lungimea maximă a fluxului ar trebui să fie 1000 în orice moment. Comanda XTRIM a fost folosită pentru a realiza acest lucru.

În scopuri demonstrative, mai întâi, vom crea un flux cu 10 intrări, după cum urmează. Comanda XADD a fost folosită pentru a efectua inserarea.

xadd touristinfo * nume jack tara italia familymems 5
xadd touristinfo * nume harry tara SUA familymems Două
xadd touristinfo * nume nikomita tara japonia familymems 3
xadd touristinfo * nume zakaria tara india familymems Două
xadd touristinfo * nume redmond tara brazilia familiemems 6
xadd touristinfo * nume găsit țara japonia familymems 3
xadd touristinfo * nume maryjohn tara SUA familymems Două
xadd touristinfo * nume liza tara italia familiemems 5
xadd touristinfo * nume nimshikaa țară Japonia familiemems 3
xadd touristinfo * nume nisha tara italia familiemems 5

Să folosim comanda XRANGE pentru a inspecta informațiile turistice din flux, după cum urmează.

xrange touristinfo - +

Ieșire:

După cum era de așteptat, cele 10 intrări de flux au fost afișate de această comandă.

În scopuri demonstrative, vom tăia fluxul unde lungimea maximă ar fi de 5.

xtrim touristinfo maxlen 5

Să inspectăm din nou intrările de flux cu comanda XRANGE.

După cum era de așteptat, cinci intrări au fost evacuate din flux, iar lungimea acestuia este de 5.

Cazul de utilizare 02 – Eliminarea intrărilor de flux pe baza ID-urilor de flux

Să luăm un exemplu în care o companie meteo ține evidența informațiilor meteo dintr-o anumită locație folosind fluxurile Redis. Acum, vor să șteargă intrările mai vechi care nu mai sunt necesare. Putem folosi comanda XTRIM folosind strategia MINID, așa cum se arată în continuare.

Mai întâi, vom crea un flux numit weatherinfo și vom adăuga 5 intrări la acesta, după cum urmează.

xadd info meteo * temp 10 umiditate cincizeci
xadd info meteo * temp douăzeci umiditate 70
xadd info meteo * temp 12 umiditate 65
xadd info meteo * temp cincisprezece umiditate 88
xadd info meteo * temp 18 umiditate Patru cinci

Ieșire:

Să folosim comanda XTRIM pentru a elimina intrările care au ID-uri mai mici decât valoarea de prag specificată.

xtrim weatherinfo MINID 1660485503248 - 0

ID-ul minim specificat este asociat cu a treia intrare. Prin urmare, intrările de după a treia intrare care au ID-uri mai mici vor fi șterse.

Ieșire:

Deoarece nu am specificat argumentele = sau ~ în mod explicit, comanda utilizează implicit operatorul =. Prin urmare, tunderea exactă a fost făcută în ambele cazuri de utilizare. Dacă ați specificat operatorul ~ în mod explicit, se va face tăierea aproape exactă, așa cum se arată în cele ce urmează.

După cum se arată în figura de mai sus, comanda XTRIM a fost utilizată cu operatorul ~. Solicităm comanda să elimine toate intrările care depășesc lungimea de 100. Deoarece nu forțăm comanda XTRIM să facă o tăiere exactă, aceasta se va concentra pe eficiența operației de tăiere. Deci, nu va elimina intrările imediate care aparțin aceluiași macro-nod. Va păstra următoarele trei intrări care sunt în același macro-nod și va elimina toate macro-nodurile după acestea. Oferă o cantitate considerabilă de îmbunătățire a performanței decât în ​​abordarea exactă a tăierii, ceea ce obligă comanda să depună un efort suplimentar. Aceeași procedură are loc atunci când pragul se bazează pe ID-urile de intrare.

Argumentul LIMIT limitează numărul de intrări evacuate din fluxul specificat, care poate fi folosit pentru a obține o îmbunătățire puțin mai mare a performanței.

Concluzie

Pe scurt, comanda XTRIM este folosită pentru a elimina intrările de flux pe baza unei valori de prag. Tipul valorii prag poate fi schimbat cu contextul care este specificat folosind argumentele comenzii MAXLEN și MINID. După cum sa discutat, tăierea se poate face în două moduri în care operația de tăiere va considera pragul ca o limită exactă sau aproximativă. În mod implicit, comanda utilizează operatorul = care este folosit pentru tăierea exactă. Cu operatorul ~, puteți face o tăiere aproximativă așa cum este menționat în secțiunea de mai sus. În general, abordarea de tăiere aproximativă și argumentul LIMIT vă ajută să obțineți un câștig considerabil de performanță cu comanda XTRIM.