Redis XTRIM

Redis Xtrim



Redis-virtojen matalan tason tiedot

Redis-virrat ovat vain liitetietorakenne, joka tarjoaa joukon erittäin tehokkaita luku- ja lisäystoimintoja muistitehokkaalla tallennusmekanismilla. Sisäisesti Redis-virrat käyttävät Radix-puutietorakennetta, joka on tilaa optimoitu puu, jolla on korkea muistitehokkuus.

Redis-virrat tallentavat tiedot merkintöjen luettelona, ​​jossa jokainen merkintä koostuu avain-arvo-pareista. Alhaisella tasolla nämä merkinnät pakataan makrosolmuihin, kuten seuraavassa esitetään.









Tässä artikkelissa keskitymme stream-merkintöjen poistamiseen XTRIM-komennolla, ja edellä mainittu konsepti vaikuttaa läheisesti poistotoiminnan tehokkuuteen. Yleensä Redis-virran merkinnän poistaminen on erittäin tehokasta, jos se tehdään makrosolmutasolla, mutta ei lähtötasolla. Tämä mekanismi toteutetaan XTRIM-komennolla, jota käsittelemme seuraavassa osassa.



XTRIM-komento

XTRIM-komentoa käytetään katkaisemaan virran merkinnät tietyn kynnysarvon perusteella. Kynnys voi olla merkintöjen enimmäismäärä streamia kohti tai vanhempi merkintätunnus. XTRIM-komento hyväksyy kynnyksen tyypin komennon argumenttina. XTRIM-komennon syntaksi on seuraava.





XTRIM stream_key MAXLEN | MINID [ = | ~ ] kynnysarvo [ LIMIT määrä ]

stream_key : Redis-virran avain.

MAXLEN : Virran enimmäispituus syötteiden leikkaamisen jälkeen. Kaikki merkinnät, jotka ylittävät kynnysarvon määrittämän streamin pituuden, poistetaan. Tämä argumentti on positiivinen kokonaisluku.

MINID : Vähimmäisvirran tunnus, jonka pitäisi jäädä merkintöjen leikkaamisen jälkeen. Kaikki merkinnät, joiden tunnukset ovat määritettyä kynnystä alhaisemmat, poistetaan. Aina kun määrität tämän parametrin, kynnysarvosta tulee suoratoistotunnus.

= operaattori : Kun määritetään, tarkka trimmaus suoritetaan kynnysarvon perusteella.

~ operaattori : Kun tämä on määritetty, lähes tarkka rajaus suoritetaan kynnysarvon ja makrosolmun koon perusteella.

kynnysarvo : Argumenttiin MAXLEN tai MINID perustuva kynnysarvo.

LIMIT määrä : Poistettavien merkintöjen enimmäismäärä.

Käyttötapaus 01 – Virtausmerkintöjen poistaminen enimmäispituuden perusteella

Oletetaan, että matkailuyritys ylläpitää Redis-myymälää pitääkseen kirjaa matkailutiedoista. Redis streams -tietorakennetta on käytetty tallentamaan jokaisen turistin tiedot avainarvopareina. Ajan myötä stream on kasvanut, ja he suunnittelevat säilyttävänsä vain 1000 viimeisintä merkintää. Joten he ovat havainneet, että virran enimmäispituuden tulisi olla 1000 milloin tahansa. XTRIM-komentoa on käytetty tämän saavuttamiseen.

Esittelytarkoituksia varten luomme ensin streamin, jossa on 10 merkintää seuraavasti. XADD-komentoa on käytetty lisäyksen suorittamiseen.

xadd matkailuinfo * nimi jack country italia familymems 5
xadd matkailuinfo * nimi harry country usa familymems kaksi
xadd matkailuinfo * nimi nikomita country japan familymems 3
xadd matkailuinfo * nimi zakaria maa intia perheenjäsenet kaksi
xadd matkailuinfo * nimi redmond country brazil familymems 6
xadd matkailuinfo * nimi löytyi maa japani perheenjäsenet 3
xadd matkailuinfo * nimi maryjohn country usa familymems kaksi
xadd matkailuinfo * nimi liza country italia familymems 5
xadd matkailuinfo * nimi nimshikaa maa japani perheenjäsenet 3
xadd matkailuinfo * nimi nisha maa italia familymems 5

Käytetään XRANGE-komentoa tarkastaaksemme streamin matkailutiedot seuraavasti.

xrange matkailuinfo - +

Lähtö:

Kuten odotettiin, tämä komento on näyttänyt 10 stream-merkintää.

Esittelytarkoituksessa leikkaamme virran kohdasta, jossa sen enimmäispituus on 5.

xtrim matkailuinfo maxlen 5

Tarkastetaan stream-merkinnät uudelleen XRANGE-komennolla.

Virrasta on odotetusti häädetty viisi sisäänkäyntiä, ja sen pituus on 5.

Käyttötapaus 02 – Stream-merkintöjen poistaminen stream-tunnusten perusteella

Otetaan esimerkki, jossa sääyhtiö seuraa tietyn sijainnin säätietoja Redis-streamien avulla. Nyt he haluavat poistaa vanhemmat merkinnät, joita ei enää tarvita. Voimme käyttää XTRIM-komentoa käyttämällä MINID-strategiaa, kuten seuraavassa esitetään.

Ensin luomme streamin nimeltä weatherinfo ja lisäämme siihen 5 merkintää seuraavasti.

xadd säätiedot * temp 10 kosteus viisikymmentä
xadd säätiedot * temp kaksikymmentä kosteus 70
xadd säätiedot * temp 12 kosteus 65
xadd säätiedot * temp viisitoista kosteus 88
xadd säätiedot * temp 18 kosteus Neljä viisi

Lähtö:

Käytämme XTRIM-komentoa poistamaan merkinnät, joiden tunnukset ovat määritettyä kynnysarvoa pienemmät.

xtrim säätiedot MINID 1660485503248 - 0

Määritetty vähimmäistunnus liittyy kolmanteen merkintään. Näin ollen kolmannen merkinnän jälkeiset merkinnät, joilla on pienempi id, poistetaan.

Lähtö:

Koska emme ole määrittäneet =- tai ~-argumentteja erikseen, komento käyttää oletuksena =-operaattoria. Tästä syystä tarkka leikkaus on tehty molemmissa käyttötapauksissa. Jos olet määrittänyt ~-operaattorin nimenomaisesti, lähes tarkka trimmaus tehdään, kuten seuraavassa näytetään.

Kuten yllä olevasta kuvasta näkyy, XTRIM-komentoa on käytetty ~-operaattorin kanssa. Pyydämme komentoa poistamaan kaikki merkinnät, jotka ylittävät 100:n pituuden. Koska emme pakota XTRIM-komentoa tekemään tarkkaa trimmausta, se keskittyy trimmauksen tehokkuuteen. Joten se ei poista välittömiä merkintöjä, jotka kuuluvat samaan makrosolmuun. Se säilyttää seuraavat kolme merkintää, jotka ovat samassa makrosolmussa, ja poistaa kaikki makrosolmut niiden jälkeen. Se parantaa huomattavasti suorituskykyä kuin tarkka trimmausmenetelmä, mikä pakottaa komennon ottamaan ylimääräistä vaivaa. Sama menettely tapahtuu, kun kynnys perustuu tulotunnuksiin.

LIMIT-argumentti rajoittaa määritetystä virrasta häätettyjen merkintöjen määrää, jota voidaan käyttää suorituskyvyn parantamiseen.

Johtopäätös

Lyhyesti sanottuna XTRIM-komentoa käytetään kynnysarvoon perustuvien stream-merkintöjen poistamiseen. Kynnysarvon tyyppiä voidaan muuttaa määritettävässä kontekstissa käyttämällä MAXLEN- ja MINID-komentoargumentteja. Kuten mainittiin, trimmaus voidaan tehdä kahdella tavalla, jolloin trimmaustoiminto pitää kynnystä tarkkana tai likimääräisenä rajana. Oletusarvoisesti komento käyttää =-operaattoria, jota käytetään tarkkaan rajaamiseen. ~-operaattorilla voit tehdä likimääräisen trimmauksen, kuten yllä olevassa osiossa mainittiin. Kaiken kaikkiaan likimääräinen trimmausmenetelmä ja LIMIT-argumentti auttavat sinua saamaan huomattavan suorituskyvyn XTRIM-komennolla.