Portal/Notes πŸ“
Programming

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 redis

Jalankan 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, message adalah kunci dan nilainya adalah Hello.

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


Edit on GitHub

Last updated on

Redis: Streams | Faisal Affan