Redis XTRIM

Redis Xtrim



Butiran Peringkat Rendah Aliran Redis

Strim Redis ialah struktur data tambahan sahaja yang menyediakan satu set operasi baca dan sisip yang sangat cekap dengan mekanisme storan yang cekap memori. Secara dalaman, aliran Redis menggunakan struktur data pokok Radix yang merupakan pokok yang dioptimumkan ruang dengan kecekapan memori yang tinggi.

Strim Redis menyimpan data sebagai senarai entri di mana setiap entri terdiri daripada pasangan nilai kunci. Pada tahap yang rendah, entri ini dibungkus ke dalam makro-nod, seperti yang ditunjukkan dalam yang berikut.









Dalam artikel ini, kami menumpukan pada penyingkiran entri strim menggunakan arahan XTRIM, dan konsep yang dinyatakan di atas sangat mempengaruhi kecekapan operasi penyingkiran. Biasanya, pengalihan keluar masuk aliran Redis sangat cekap jika ia dilakukan pada tahap makro-nod tetapi tidak pada tahap kemasukan. Mekanisme ini dilaksanakan dengan arahan XTRIM yang akan kita bincangkan dalam bahagian berikut.



Perintah XTRIM

Perintah XTRIM digunakan untuk memotong entri aliran berdasarkan nilai ambang yang diberikan. Ambang boleh menjadi bilangan maksimum entri setiap aliran atau id masukan yang lebih lama. Perintah XTRIM menerima jenis ambang sebagai hujah arahan. Sintaks arahan XTRIM adalah seperti berikut.





XTRIM stream_key MAXLEN | MINID [ = | ~ ] nilai_ambang [ LIMIT kiraan ]

kunci_strim : Kunci aliran Redis.

MAXLEN : Panjang maksimum strim selepas pemangkasan entri. Semua entri akan dialih keluar yang melebihi panjang strim, yang ditentukan oleh nilai ambang. Hujah ini ialah integer positif.

MINID : Id aliran minimum yang harus kekal selepas memangkas entri. Semua entri akan dialih keluar yang mempunyai ID yang lebih rendah daripada ambang yang ditentukan. Setiap kali anda menentukan parameter ini, ambang menjadi ID strim.

= pengendali : Apabila dinyatakan, pemangkasan tepat akan dilakukan berdasarkan nilai ambang.

~ pengendali : Apabila dinyatakan, pemangkasan hampir tepat akan dilakukan berdasarkan nilai ambang dan saiz nod makro.

nilai_ambang : Nilai ambang berdasarkan hujah MAXLEN atau MINID.

LIMIT kiraan : Bilangan maksimum entri untuk dialih keluar.

Use Case 01 – Mengalih keluar Entri Strim Berdasarkan Panjang Maksimum

Katakan syarikat pelancongan mengekalkan kedai Redis untuk menjejaki maklumat pelancongan. Struktur data aliran Redis telah digunakan untuk menyimpan setiap maklumat pelancong sebagai pasangan nilai utama. Dari masa ke masa, strim telah berkembang, dan mereka merancang untuk menyimpan hanya 1000 entri terkini. Jadi mereka telah mengenal pasti panjang maksimum aliran hendaklah 1000 pada bila-bila masa. Perintah XTRIM telah digunakan untuk mencapai ini.

Untuk tujuan demonstrasi, pertama, kami akan membuat aliran dengan 10 entri seperti berikut. Perintah XADD telah digunakan untuk melakukan pemasukan.

xtambah touristinfo * nama jack country italy familymems 5
xtambah touristinfo * nama harry country usa familymems dua
xtambah touristinfo * nama nikomita negara jepun familymems 3
xtambah touristinfo * nama zakaria negara india familymems dua
xtambah touristinfo * nama negara redmond brazil familymems 6
xtambah touristinfo * nama dijumpai negara jepun familymems 3
xtambah touristinfo * nama maryjohn negara usa familymems dua
xtambah touristinfo * nama liza country italy familymems 5
xtambah touristinfo * nama nimshikaa negara jepun familymems 3
xtambah touristinfo * nama nisha country italy familymems 5

Mari gunakan arahan XRANGE untuk memeriksa info pelancong aliran seperti berikut.

xrange touristinfo - +

Pengeluaran:

Seperti yang dijangkakan, 10 entri aliran telah dipaparkan oleh arahan ini.

Untuk tujuan demonstrasi, kami akan memangkas aliran dengan panjang maksimumnya ialah 5.

xtrim touristinfo maxlen 5

Mari kita periksa entri strim sekali lagi dengan arahan XRANGE.

Seperti yang dijangkakan, lima penyertaan telah diusir dari aliran, dan panjangnya ialah 5.

Gunakan Kes 02 – Mengalih keluar Entri Strim Berdasarkan ID Strim

Mari kita ambil contoh di mana syarikat cuaca menjejaki maklumat cuaca lokasi tertentu menggunakan aliran Redis. Kini, mereka mahu memadamkan entri lama yang tidak diperlukan lagi. Kita boleh menggunakan arahan XTRIM menggunakan strategi MINID, seperti yang ditunjukkan dalam berikut.

Pertama, kami akan mencipta strim yang dipanggil weatherinfo dan menambah 5 entri padanya seperti berikut.

xtambah info cuaca * temp 10 kelembapan lima puluh
xtambah info cuaca * temp dua puluh kelembapan 70
xtambah info cuaca * temp 12 kelembapan 65
xtambah info cuaca * temp lima belas kelembapan 88
xtambah info cuaca * temp 18 kelembapan Empat lima

Pengeluaran:

Mari gunakan arahan XTRIM untuk mengalih keluar masukan yang mempunyai ID lebih rendah daripada nilai ambang yang ditentukan.

info cuaca xtrim MINID 1660485503248 - 0

Id minimum yang ditentukan dikaitkan dengan entri ketiga. Oleh itu, entri selepas entri ketiga yang mempunyai id yang lebih rendah akan dipadamkan.

Pengeluaran:

Oleh kerana kami tidak menyatakan argumen = atau ~ secara eksplisit, arahan menggunakan operator = secara lalai. Oleh itu, pemangkasan yang tepat telah dilakukan dalam kedua-dua kes penggunaan. Jika anda telah menyatakan operator ~ secara eksplisit, pemangkasan hampir tepat akan dilakukan, seperti yang ditunjukkan dalam yang berikut.

Seperti yang ditunjukkan dalam rajah di atas, arahan XTRIM telah digunakan dengan operator ~. Kami meminta arahan untuk mengalih keluar semua entri yang melebihi panjang 100. Memandangkan kami tidak memaksa arahan XTRIM untuk melakukan pemangkasan yang tepat, ia akan memberi tumpuan kepada kecekapan operasi pemangkasan. Jadi, ia tidak akan mengalih keluar masukan segera yang tergolong dalam nod makro yang sama. Ia akan menyimpan tiga entri seterusnya yang berada dalam nod makro yang sama dan akan mengalih keluar semua nod makro selepas itu. Ia memberikan sejumlah besar peningkatan prestasi berbanding pendekatan pemangkasan yang tepat, yang memaksa arahan untuk melakukan usaha tambahan. Prosedur yang sama berlaku apabila ambang adalah berdasarkan id kemasukan.

Argumen LIMIT mengehadkan bilangan entri yang diusir daripada strim yang ditentukan, yang boleh digunakan untuk memperoleh sedikit peningkatan prestasi.

Kesimpulan

Ringkasnya, arahan XTRIM digunakan untuk mengalih keluar masukan aliran berdasarkan nilai ambang. Jenis nilai ambang boleh ditukar dengan konteks yang ditentukan menggunakan argumen arahan MAXLEN dan MINID. Seperti yang dibincangkan, pemangkasan boleh dilakukan dalam dua cara di mana operasi pemangkasan akan menganggap ambang sebagai had yang tepat atau anggaran. Secara lalai, arahan menggunakan operator = yang digunakan untuk pemangkasan tepat. Dengan operator ~, anda boleh melakukan pemangkasan anggaran seperti yang dinyatakan dalam bahagian di atas. Secara keseluruhan, pendekatan pemangkasan anggaran dan hujah LIMIT membantu anda memperoleh keuntungan prestasi yang besar dengan arahan XTRIM.