Tidak ada cara langsung untuk menghapus entri lama berdasarkan TTL/usia. Anda dapat menggunakan kombinasi XTRIM/XDEL
dengan perintah lain untuk memangkas aliran.
Mari kita lihat bagaimana kita dapat menggunakan XTRIM
Aliran XTRIM MAXLEN ~ SIZE
XTRIM memangkas aliran ke sejumlah item tertentu, mengeluarkan item lama (item dengan ID lebih rendah) jika diperlukan.
Anda membuat ukuran streaming setiap hari atau secara berkala berdasarkan kebijakan penghapusan Anda dan menyimpannya di suatu tempat menggunakan XLEN
perintah
Jalankan tugas berkala yang akan memanggil XTRIM sebagai
XTRIM x-stream MAXLEN ~ (NEW_SIZE - PREVIOUS_SIZE)
Misalnya, kemarin ukuran streaming adalah 500 sekarang menjadi 600 maka kita perlu menghapus 500 entri agar kita bisa menjalankannya
XTRIM x-stream MAXLEN ~ 100
Anda dapat menggunakan kebijakan yang berbeda untuk penghapusan misalnya harian, mingguan, dua kali seminggu, dll.
ID aliran XDEL [ID...]
Menghapus entri yang ditentukan dari aliran, dan mengembalikan jumlah entri yang dihapus, yang mungkin berbeda dari jumlah ID yang diteruskan ke perintah jika ID tertentu tidak ada.
Jadi yang dapat Anda lakukan adalah setiap kali Layanan B menggunakan acara tersebut daripada layanan itu sendiri yang dapat menghapus entri streaming karena layanan B mengetahui ID streaming, tetapi ini tidak akan berfungsi segera setelah Anda mulai menggunakan grup konsumen. Jadi saya akan mengatakan gunakan Redis set atau Redis map untuk melacak id aliran yang diakui dan menjalankan pekerjaan pembersihan berkala untuk membersihkan aliran.
Misalnya
Layanan A mengirimkan item aliran dengan ID1 ke layanan B Layanan B mengakui item aliran setelah mengkonsumsi item di mapack_stream ={ ID1:true }, Anda dapat melacak data lain mis. menghitung dalam kasus kelompok konsumen.
Pekerjaan menyapu akan berjalan secara berkala seperti jam 1 pagi setiap hari yang membaca semua elemen ack_stream dan menyaring semua item yang perlu dihapus. Sekarang Anda dapat menghubungi XDEL
perintah dalam batch dengan set id streaming.