Redis XTRIM

Redis Xtrim



Redise voogude madala taseme üksikasjad

Redise vood on ainult lisamisega andmestruktuur, mis pakub väga tõhusaid lugemis- ja sisestamistoiminguid koos mälutõhusa salvestusmehhanismiga. Sisemiselt kasutavad Redise vood Radixi puu andmestruktuuri, mis on ruumi jaoks optimeeritud puu, millel on kõrge mälutõhusus.

Redise vood salvestavad andmeid kirjete loendina, kus iga kirje koosneb võtme-väärtuste paaridest. Madalal tasemel pakitakse need kirjed makrosõlmedesse, nagu on näidatud järgmises.









Selles artiklis keskendume vookirjete eemaldamisele käsu XTRIM abil ning ülalmainitud kontseptsioon mõjutab oluliselt eemaldamistoimingu tõhusust. Tavaliselt on Redise voo sisestuse eemaldamine väga tõhus, kui seda tehakse makrosõlme tasemel, kuid mitte algtasemel. Seda mehhanismi rakendatakse käsuga XTRIM, mida arutame järgmises jaotises.



XTRIM-i käsk

Käsku XTRIM kasutatakse voo kirjete katkestamiseks etteantud läviväärtuse alusel. Lävi võib olla maksimaalne kirjete arv voo kohta või vanem kirje ID. Käsk XTRIM aktsepteerib käsuargumendina läve tüüpi. XTRIM-käsu süntaks on järgmine.





XTRIM stream_key MAXLEN | MINID [ = | ~ ] lävi_väärtus [ LIMIT arv ]

voo_võti : Redise voo võti.

MAXLEN : Voo maksimaalne pikkus pärast kirjete kärpimist. Kõik kirjed, mis ületavad voo pikkust, mis on määratud läviväärtusega, eemaldatakse. See argument on positiivne täisarv.

MINID : minimaalne voo ID, mis peaks jääma pärast kirjete kärpimist. Kõik kirjed, mille ID-d on määratud lävest madalamad, eemaldatakse. Selle parameetri määramisel muutub lävi voo ID-ks.

= operaator : Kui see on määratud, tehakse täpne kärpimine läviväärtuse alusel.

~ operaator : kui see on määratud, tehakse läviväärtuse ja makrosõlme suuruse põhjal peaaegu täpne kärpimine.

lävi_väärtus : argumendil MAXLEN või MINID põhinev läviväärtus.

LIMIT arv : maksimaalne eemaldatavate kirjete arv.

Kasutusjuhtum 01 – vookirjete eemaldamine maksimaalse pikkuse alusel

Oletame, et turismifirma peab turismiinfo jälgimiseks kauplust Redis. Redise voogude andmestruktuuri on kasutatud iga turisti teabe salvestamiseks võtme-väärtuste paaridena. Aja jooksul on voog kasvanud ja nad kavatsevad alles jätta ainult 1000 viimast kirjet. Seega on nad tuvastanud, et voo maksimaalne pikkus peaks igal ajal olema 1000. Selle saavutamiseks on kasutatud käsku XTRIM.

Esmalt loome tutvustamise eesmärgil 10 kirjega voo järgmiselt. Sisestamiseks on kasutatud käsku XADD.

xadd turismiinfo * nimi jack country italia familymems 5
xadd turismiinfo * nimetage Harry riik usa perekonnaliikmed kaks
xadd turismiinfo * nimi nikomita riik Jaapan peremems 3
xadd turismiinfo * nimi zakaria riik india peremems kaks
xadd turismiinfo * nimetage redmondi riik Brasiilia perekonnaliikmeteks 6
xadd turismiinfo * nimi leitud riik Jaapan peremems 3
xadd turismiinfo * nimi maryjohn country usa familymems kaks
xadd turismiinfo * nimi liza riik itaalia perekonnaliikmed 5
xadd turismiinfo * nimi nimshikaa riik Jaapan peremems 3
xadd turismiinfo * nimi nisha riik itaalia peremehed 5

Kasutame käsku XRANGE voo turismiinfo kontrollimiseks järgmiselt.

xrange turismiinfo - +

Väljund:

Nagu oodatud, on selle käsuga kuvatud 10 vookirjet.

Demonstratsiooni eesmärgil kärbime voogu, kus selle maksimaalne pikkus oleks 5.

xtrim turismiinfo maxlen 5

Kontrollime vookirjeid uuesti käsuga XRANGE.

Ootuspäraselt on ojast välja tõstetud viis sissepääsu ja selle pikkus on 5.

Kasutusjuhtum 02 – vookirjete eemaldamine voo ID-de alusel

Võtame näite, kus ilmafirma jälgib Redise voogude abil antud asukoha ilmateavet. Nüüd tahavad nad kustutada vanemad kirjed, mida enam ei vajata. Saame kasutada käsku XTRIM, kasutades strateegiat MINID, nagu on näidatud järgmises.

Esiteks loome voo nimega weatherinfo ja lisame sellele 5 kirjet järgmiselt.

x lisa ilmateave * temp 10 niiskus viiskümmend
x lisa ilmateave * temp kakskümmend niiskus 70
x lisa ilmateave * temp 12 niiskus 65
x lisa ilmateave * temp viisteist niiskus 88
x lisa ilmateave * temp 18 niiskus Neli, viis

Väljund:

Kasutame käsku XTRIM, et eemaldada kirjed, mille ID-d on määratud läviväärtusest väiksemad.

xtrim ilmateave MINID 1660485503248 - 0

Määratud minimaalne ID on seotud kolmanda kirjega. Seega kustutatakse kolmandale kirjele järgnevad väiksema ID-ga kirjed.

Väljund:

Kuna me pole = või ~ argumente selgesõnaliselt määranud, kasutab käsk vaikimisi operaatorit =. Seega on mõlema kasutusjuhtumi korral tehtud täpne kärpimine. Kui olete määranud operaatori ~ selgesõnaliselt, tehakse peaaegu täpne kärpimine, nagu on näidatud järgmises.

Nagu ülaltoodud joonisel näidatud, on käsku XTRIM kasutatud koos operaatoriga ~. Palume käsul eemaldada kõik kirjed, mis ületavad pikkust 100. Kuna me ei sunni käsku XTRIM tegema täpset kärpimist, keskendub see kärpimise efektiivsusele. Seega ei eemalda see koheseid kirjeid, mis kuuluvad samasse makrosõlme. See säilitab järgmised kolm samas makrosõlmes olevat kirjet ja eemaldab kõik makrosõlmed pärast neid. See parandab jõudlust märkimisväärselt kui täpne kärpimine, mis sunnib käsku lisapingutusi tegema. Sama protseduur toimub ka siis, kui lävi põhineb sisestuse ID-del.

Argument LIMIT piirab määratud voost välja tõstetud kirjete arvu, mida saab kasutada jõudluse parandamiseks.

Järeldus

Lühidalt öeldes kasutatakse käsku XTRIM vookirjete eemaldamiseks läviväärtuse alusel. Läviväärtuse tüüpi saab muuta vastavalt kontekstile, mis määratakse käsuargumentide MAXLEN ja MINID abil. Nagu arutletud, saab kärpimist teha kahel viisil, kus kärpimisoperatsioon arvestab läve täpse või ligikaudse piirina. Vaikimisi kasutab käsk operaatorit =, mida kasutatakse täpseks kärpimiseks. Operaatoriga ~ saate teha ligikaudset kärpimist, nagu on mainitud ülaltoodud jaotises. Üldiselt aitavad ligikaudne kärpimisviis ja LIMIT-argument teil XTRIM-käsuga märkimisväärset jõudlust suurendada.