Redis XTRIM

Redis Xtrim



Detail Redis Stream Tingkat Rendah

Redis streams adalah struktur data tambahan saja yang menyediakan serangkaian operasi baca dan penyisipan yang sangat efisien dengan mekanisme penyimpanan yang hemat memori. Secara internal, aliran Redis menggunakan struktur data pohon Radix yang merupakan pohon yang dioptimalkan ruang dengan efisiensi memori yang tinggi.

Aliran Redis menyimpan data sebagai daftar entri di mana setiap entri terdiri dari pasangan nilai kunci. Pada tingkat rendah, entri ini dikemas ke dalam makro-node, seperti yang ditunjukkan berikut ini.









Dalam artikel ini, kami berfokus pada penghapusan entri aliran menggunakan perintah XTRIM, dan konsep yang disebutkan di atas sangat memengaruhi efisiensi operasi penghapusan. Biasanya, penghapusan entri aliran Redis sangat efisien jika dilakukan pada level makro-node tetapi tidak pada level entri. Mekanisme ini diimplementasikan dengan perintah XTRIM yang akan kita bahas di bagian berikut.



Perintah XTRIM

Perintah XTRIM digunakan untuk memotong entri aliran berdasarkan nilai ambang yang diberikan. Ambang batas dapat berupa jumlah maksimum entri per aliran atau id entri yang lebih lama. Perintah XTRIM menerima jenis ambang batas sebagai argumen perintah. Sintaks dari perintah XTRIM adalah sebagai berikut.





XTRIM stream_key MAXLEN | kecil [ = | ~ ] ambang_nilai [ BATAS hitungan ]

stream_key : Kunci aliran Redis.

MAXLEN : Panjang maksimum streaming setelah memangkas entri. Semua entri akan dihapus yang melebihi panjang aliran, yang ditentukan oleh nilai ambang batas. Argumen ini adalah bilangan bulat positif.

kecil : ID streaming minimum yang harus tetap ada setelah memangkas entri. Semua entri akan dihapus yang memiliki ID lebih rendah dari ambang batas yang ditentukan. Setiap kali Anda menentukan parameter ini, ambang batas menjadi ID streaming.

= operator : Bila ditentukan, pemangkasan yang tepat akan dilakukan berdasarkan nilai ambang batas.

~ operator : Bila ditentukan, pemangkasan yang hampir tepat akan dilakukan berdasarkan nilai ambang batas dan ukuran simpul makro.

ambang_nilai : Nilai ambang berdasarkan argumen MAXLEN atau MINID.

BATAS hitungan : Jumlah maksimum entri yang akan dihapus.

Kasus Penggunaan 01 – Menghapus Entri Aliran Berdasarkan Panjang Maksimum

Mari kita asumsikan bahwa perusahaan pariwisata mengelola toko Redis untuk melacak informasi turis. Struktur data aliran Redis telah digunakan untuk menyimpan informasi setiap wisatawan sebagai pasangan nilai kunci. Seiring waktu, aliran telah berkembang, dan mereka berencana untuk hanya menyimpan 1000 entri terbaru. Jadi mereka telah mengidentifikasi panjang maksimum aliran harus 1000 setiap saat. Perintah XTRIM telah digunakan untuk mencapai ini.

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

xtambahkan info wisata * nama keluarga jack country italia 5
xtambahkan info wisata * nama harry country usa familymems dua
xtambahkan info wisata * nama nikomita country japan familymems 3
xtambahkan info wisata * nama zakaria country india familymems dua
xtambahkan info wisata * nama redmond country brazil familymems 6
xtambahkan info wisata * nama yang ditemukan negara jepang familymems 3
xtambahkan info wisata * nama maryjohn country usa familymems dua
xtambahkan info wisata * nama liza country italia familymems 5
xtambahkan info wisata * nama nimshikaa negara jepang familymems 3
xtambahkan info wisata * nama nisha country italia familymems 5

Mari kita gunakan perintah XRANGE untuk memeriksa aliran Touristinfo sebagai berikut.

info wisata xrange - +

Keluaran:

Seperti yang diharapkan, 10 entri aliran telah ditampilkan oleh perintah ini.

Untuk tujuan demonstrasi, kami akan memangkas aliran di mana panjang maksimumnya adalah 5.

xtrim info wisata maxlen 5

Mari kita periksa entri aliran lagi dengan perintah XRANGE.

Seperti yang diharapkan, lima entri telah dikeluarkan dari aliran, dan panjangnya adalah 5.

Kasus Penggunaan 02 – Menghapus Entri Aliran Berdasarkan ID Aliran

Mari kita ambil contoh di mana perusahaan cuaca melacak informasi cuaca dari lokasi tertentu menggunakan aliran Redis. Sekarang, mereka ingin menghapus entri lama yang tidak lagi diperlukan. Kita dapat menggunakan perintah XTRIM menggunakan strategi MINID, seperti yang ditunjukkan berikut ini.

Pertama, kita akan membuat aliran bernama weatherinfo dan menambahkan 5 entri sebagai berikut.

xtambahkan info cuaca * suhu 10 kelembaban lima puluh
xtambahkan info cuaca * suhu dua puluh kelembaban 70
xtambahkan info cuaca * suhu 12 kelembaban 65
xtambahkan info cuaca * suhu limabelas kelembaban 88
xtambahkan info cuaca * suhu 18 kelembaban Empat. Lima

Keluaran:

Mari gunakan perintah XTRIM untuk menghapus entri yang memiliki ID lebih rendah dari nilai ambang batas yang ditentukan.

xtrim info cuaca MINID 1660485503248 - 0

Id minimum yang ditentukan terkait dengan entri ketiga. Oleh karena itu, entri setelah entri ketiga yang memiliki id lebih rendah akan dihapus.

Keluaran:

Karena kita belum menentukan argumen = atau ~ secara eksplisit, perintah menggunakan operator = secara default. Oleh karena itu, pemangkasan yang tepat telah dilakukan dalam kedua kasus penggunaan. Jika Anda telah menentukan operator ~ secara eksplisit, pemangkasan yang hampir tepat akan dilakukan, seperti yang ditunjukkan berikut ini.

Seperti yang ditunjukkan pada gambar di atas, perintah XTRIM telah digunakan dengan operator ~. Kami meminta perintah untuk menghapus semua entri yang melebihi panjang 100. Karena kami tidak memaksa perintah XTRIM untuk melakukan pemangkasan yang tepat, itu akan fokus pada efisiensi operasi pemangkasan. Jadi, itu tidak akan menghapus entri langsung yang termasuk dalam simpul makro yang sama. Ini akan menyimpan tiga entri berikutnya yang berada di simpul makro yang sama dan akan menghapus semua simpul makro setelahnya. Ini memberikan peningkatan kinerja yang cukup besar daripada pendekatan pemangkasan yang tepat, yang memaksa perintah untuk melakukan upaya ekstra. Prosedur yang sama terjadi ketika ambang batas didasarkan pada id entri.

Argumen LIMIT membatasi jumlah entri yang dikeluarkan dari aliran tertentu, yang dapat digunakan untuk mendapatkan sedikit peningkatan kinerja.

Kesimpulan

Singkatnya, perintah XTRIM digunakan untuk menghapus entri aliran berdasarkan nilai ambang batas. Jenis nilai ambang batas dapat diubah dengan konteks yang ditentukan menggunakan argumen perintah MAXLEN dan MINID. Seperti yang dibahas, pemangkasan dapat dilakukan dengan dua cara di mana operasi pemangkasan akan mempertimbangkan ambang batas sebagai batas eksak atau perkiraan. Secara default, perintah menggunakan operator = yang digunakan untuk pemangkasan yang tepat. Dengan operator ~, Anda dapat melakukan pemangkasan perkiraan seperti yang disebutkan di bagian di atas. Secara keseluruhan, pendekatan pemangkasan perkiraan dan argumen LIMIT membantu Anda mendapatkan peningkatan kinerja yang cukup besar dengan perintah XTRIM.