Redis XTRIM

Redis Xtrim



Zema līmeņa informācija par Redis straumēm

Redis straumes ir tikai pievienošanas datu struktūra, kas nodrošina ļoti efektīvu lasīšanas un ievietošanas darbību kopu ar atmiņu efektīvu uzglabāšanas mehānismu. Redis straumēs iekšēji tiek izmantota Radix koka datu struktūra, kas ir telpai optimizēts koks ar augstu atmiņas efektivitāti.

Redis straumes datus glabā kā ierakstu sarakstu, kurā katrs ieraksts sastāv no atslēgu un vērtību pāriem. Zemā līmenī šie ieraksti tiek iesaiņoti makromezglos, kā parādīts tālāk.









Šajā rakstā mēs koncentrējamies uz straumes ierakstu noņemšanu, izmantojot komandu XTRIM, un iepriekš minētā koncepcija cieši ietekmē noņemšanas darbības efektivitāti. Parasti Redis straumes ieraksta noņemšana ir ļoti efektīva, ja tā tiek veikta makromezgla līmenī, bet ne sākuma līmenī. Šis mehānisms tiek ieviests ar komandu XTRIM, par kuru mēs runāsim nākamajā sadaļā.



XTRIM komanda

Komanda XTRIM tiek izmantota, lai nogrieztu straumes ierakstus, pamatojoties uz doto sliekšņa vērtību. Slieksnis var būt maksimālais ierakstu skaits vienā straumē vai vecāks ieraksta ID. Komanda XTRIM pieņem sliekšņa veidu kā komandas argumentu. Komandas XTRIM sintakse ir šāda.





XTRIM straumes_atslēga MAXLEN | MINID [ = | ~ ] sliekšņa_vērtība [ LIMIT skaits ]

straumes_atslēga : Redis straumes atslēga.

MAXLEN : maksimālais straumes garums pēc ierakstu apgriešanas. Tiks noņemti visi ieraksti, kas pārsniedz straumes garumu, ko nosaka sliekšņa vērtība. Šis arguments ir pozitīvs vesels skaitlis.

MINID : minimālais straumes ID, kam jāpaliek pēc ierakstu apgriešanas. Tiks noņemti visi ieraksti, kuru ID ir zemāki par norādīto slieksni. Ikreiz, kad norādāt šo parametru, slieksnis kļūst par straumes ID.

= operators : Ja norādīts, tiks veikta precīza apgriešana, pamatojoties uz sliekšņa vērtību.

~ operators : ja norādīts, tiks veikta gandrīz precīza apgriešana, pamatojoties uz sliekšņa vērtību un makromezgla izmēru.

sliekšņa_vērtība : sliekšņa vērtība, kuras pamatā ir arguments MAXLEN vai MINID.

LIMIT skaits : maksimālais noņemamo ierakstu skaits.

Lietošanas gadījums 01 — straumes ierakstu noņemšana, pamatojoties uz maksimālo garumu

Pieņemsim, ka tūrisma uzņēmums uztur veikalu Redis, lai sekotu līdzi tūrisma informācijai. Redis straumju datu struktūra ir izmantota, lai saglabātu katra tūrista informāciju kā atslēgu un vērtību pārus. Laika gaitā straume ir pieaugusi, un viņi plāno saglabāt tikai jaunākos 1000 ierakstus. Tāpēc viņi ir noteikuši, ka maksimālajam straumes garumam jebkurā laikā jābūt 1000. Lai to panāktu, tika izmantota komanda XTRIM.

Demonstrācijas nolūkos vispirms mēs izveidosim straumi ar 10 ierakstiem šādi. Lai veiktu ievietošanu, tika izmantota komanda XADD.

xadd tūrisma info * nosaukums džeks valsts itālija familymems 5
xadd tūrisma info * vārds Harijs valsts asv ģimenes locekļi divi
xadd tūrisma info * vārds nikomita valsts japāna familymems 3
xadd tūrisma info * nosaukums Zakaria valsts Indija ģimenes locekļi divi
xadd tūrisma info * nosauciet redmondas valsts brazīlijas ģimeni 6
xadd tūrisma info * vārds atrasts valsts Japāna ģimenes locekļi 3
xadd tūrisma info * vārds Maryjohn country asv familymems divi
xadd tūrisma info * vārds liza valsts itālija familymems 5
xadd tūrisma info * vārds nimshikaa valsts japāna familymems 3
xadd tūrisma info * vārds Niša valsts itālija familymems 5

Izmantosim komandu XRANGE, lai pārbaudītu tūrisma informācijas straumi šādi.

xrange tūrisma info - +

Izvade:

Kā gaidīts, šī komanda ir parādījusi 10 straumes ierakstus.

Demonstrācijas nolūkos mēs apgriezīsim straumi, kur tās maksimālais garums būtu 5.

xtrim tūrisma info maxlen 5

Vēlreiz pārbaudīsim straumes ierakstus ar komandu XRANGE.

Kā gaidīts, no straumes ir izlikti pieci ieraksti, un tā garums ir 5.

Lietošanas gadījums 02 — straumes ierakstu noņemšana, pamatojoties uz straumes ID

Ņemsim piemēru, kur laikapstākļu uzņēmums seko laikapstākļu informācijai noteiktā vietā, izmantojot Redis straumes. Tagad viņi vēlas izdzēst vecākus ierakstus, kas vairs nav vajadzīgi. Mēs varam izmantot komandu XTRIM, izmantojot MINID stratēģiju, kā parādīts tālāk.

Pirmkārt, mēs izveidosim straumi ar nosaukumu weatherinfo un pievienosim tai 5 ierakstus šādi.

x pievieno laikapstākļu informāciju * temp 10 mitrums piecdesmit
x pievieno laikapstākļu informāciju * temp divdesmit mitrums 70
x pievieno laikapstākļu informāciju * temp 12 mitrums 65
x pievieno laikapstākļu informāciju * temp piecpadsmit mitrums 88
x pievieno laikapstākļu informāciju * temp 18 mitrums Četri, pieci

Izvade:

Izmantosim komandu XTRIM, lai noņemtu ierakstus, kuru ID ir zemāki par norādīto sliekšņa vērtību.

xtrim weatherinfo MINID 1660485503248 - 0

Norādītais minimālais ID ir saistīts ar trešo ierakstu. Tādējādi ieraksti pēc trešā ieraksta, kuriem ir mazāks ID, tiks dzēsti.

Izvade:

Tā kā mēs neesam skaidri norādījuši argumentus = vai ~, komanda pēc noklusējuma izmanto operatoru =. Tādējādi abos lietošanas gadījumos ir veikta precīza apgriešana. Ja esat skaidri norādījis operatoru ~, tiks veikta gandrīz precīza apgriešana, kā parādīts tālāk.

Kā parādīts iepriekš attēlā, komanda XTRIM ir izmantota ar ~ operatoru. Mēs lūdzam komandu noņemt visus ierakstus, kas pārsniedz 100. Tā kā mēs nepiespiežam komandu XTRIM veikt precīzu apgriešanu, tā koncentrēsies uz apgriešanas darbības efektivitāti. Tātad tas nenoņems tūlītējos ierakstus, kas pieder vienam un tam pašam makromezglam. Tas saglabās nākamos trīs ierakstus, kas atrodas tajā pašā makromezglā, un noņems visus makromezglus pēc tiem. Tas nodrošina ievērojamu veiktspējas uzlabojumu nekā precīzā apgriešanas pieeja, kas liek komandai pielikt papildu pūles. Tāda pati procedūra notiek, ja slieksnis ir balstīts uz ieraksta ID.

Arguments LIMIT ierobežo izlikto ierakstu skaitu no norādītās straumes, ko var izmantot, lai nedaudz uzlabotu veiktspēju.

Secinājums

Īsāk sakot, komanda XTRIM tiek izmantota, lai noņemtu straumes ierakstus, pamatojoties uz sliekšņa vērtību. Sliekšņa vērtības veidu var mainīt atkarībā no konteksta, kas tiek norādīts, izmantojot komandu argumentus MAXLEN un MINID. Kā minēts, apgriešanu var veikt divos veidos, kur apgriešanas darbība slieksni uzskatīs par precīzu vai aptuvenu ierobežojumu. Pēc noklusējuma komanda izmanto = operatoru, kas tiek izmantots precīzai apgriešanai. Izmantojot operatoru ~, varat veikt aptuvenu apgriešanu, kā minēts iepriekš sadaļā. Kopumā aptuvenā apgriešanas pieeja un arguments LIMIT palīdz iegūt ievērojamu veiktspējas pieaugumu, izmantojot komandu XTRIM.