Redis: Streams
Memahami Redis Streams β struktur data append-only log untuk merekam dan mensindikasi event secara real-time.
Versi Bahasa Indonesia. Baca dalam Bahasa Inggris
Redis stream adalah struktur data yang bertindak seperti log append-only tetapi juga mengimplementasikan beberapa operasi untuk mengatasi beberapa keterbatasan dari log append-only yang tipikal. Kita dapat menggunakan stream untuk merekam dan secara simultan mensindikasi event secara real-time.
- Redis menghasilkan ID unik untuk setiap entri stream.
- Stream menyimpan pesan di Redis selama yang Anda inginkan (dapat dikonfigurasi).
- Konsumen dapat membaca dengan kecepatan mereka sendiri, bahkan jika mereka offline.
- Kita dapat mengakui pesan (
XACK) dan melacak pengiriman.
Mirip dengan pub/sub, kita membutuhkan producer dan konsumen untuk mengimplementasikan redis stream di sistem kita.
Contoh Dasar
Mari kita buat contoh dasar redis stream menggunakan perintah XADD dan XREAD.
Setup
Untuk menjalankan redis server, Anda dapat menginstalnya langsung di mesin Anda atau menggunakan virtualisasi. Saya lebih suka menggunakan docker dan berikut adalah caranya.
Jalankan container detached dengan nama my-redis menggunakan image redis terbaru dan buka port 6379.
docker run -d -p 6379:6379 --name my-redis redisJalankan redis-cli di dalam container redis yang baru dibuat.
β redis_streams docker exec -it my-redis redis-cli
127.0.0.1:6379> XADD
Ini adalah bentuk paling sederhana dari menambahkan pesan ke Redis Stream. Setiap pesan akan memiliki ID unik dan beberapa field data.
127.0.0.1:6379> XADD mystream * message Hello
"1740039025432-0"mystream: nama stream, redis akan membuat stream jika belum ada.*: Stream ID, akan menghasilkan ID unik secara otomatis jika argumen ID yang ditentukan adalah*.message Hello: Pasangan key value,messageadalah kunci dan nilainya adalahHello.
XREAD
Membaca data dari satu atau beberapa stream. Perintah ini memiliki opsi untuk memblokir jika item tidak tersedia.
127.0.0.1:6379> XREAD COUNT 1 STREAMS mystream 0
1) 1) "mystream"
2) 1) 1) "1740039025432-0"
2) 1) "message"
2) "Hello"COUNT 1: Mengembalikan maksimal 1 elemen untuk setiap stream.STREAMS mystream 0:mystream: Nama stream.0: Membaca elemen dari awal.
Referensi
- https://redis.io/docs/latest/develop/data-types/streams/
- https://www.docker.com/blog/how-to-use-the-redis-docker-official-image/
Last updated on