Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Apa perbedaan utama antara Redis Pub/Sub dan Redis Stream?

Penyimpanan data

Pub/Sub adalah platform Penerbit/Pelanggan, ini bukan penyimpanan data. Pesan yang dipublikasikan menguap, terlepas dari apakah ada pelanggan.

Di Redis Streams, stream adalah tipe data, struktur datanya sendiri. Pesan atau entri disimpan dalam memori dan tetap di sana sampai diperintahkan untuk dihapus.

Komunikasi sinkronisasi/Asinkron (Tekan/Tarik)

Pub/Sub adalah komunikasi sinkron (push protokol). Semua pihak perlu aktif pada saat yang sama untuk dapat berkomunikasi. Di sini Redis adalah broker perpesanan sinkron murni.

Redis Streams memungkinkan keduanya sinkron (XREAD dengan BLOCK dan $ special khusus ID adalah dorongan protokol) dan komunikasi asinkron (XREAD biasa) adalah tarik protokol). XREAD dengan BLOCK seperti Pub/Sub, tetapi dengan kemampuan untuk melanjutkan saat terputus tanpa kehilangan pesan.

Semantik Pengiriman

Pub/Sub adalah Paling-paling, yaitu "api dan lupakan".

Redis Streams memungkinkan keduanya At-most-once atau At-least-once (pengakuan eksplisit dikirim oleh penerima)

Mode pemblokiran untuk konsumen

Pub/Sub hanya mode pemblokiran. Setelah berlangganan saluran, klien dimasukkan ke mode pelanggan dan tidak dapat mengeluarkan perintah (kecuali untuk [P]SUBSCRIBE , [P]UNSUBSCRIBE , PING dan QUIT ), telah menjadi hanya-baca.

Redis Streams memungkinkan konsumen membaca pesan dalam mode pemblokiran atau tidak.

Menyebarluaskan

Pub/Sub hanya untuk penyebaran saja. Semua klien aktif mendapatkan semua pesan.

Redis Streams memungkinkan penyebaran (dengan XREAD ), tetapi juga untuk menyediakan subset pesan yang berbeda dari aliran yang sama ke banyak klien. Ini memungkinkan penskalaan pemrosesan pesan, dengan merutekan pesan yang berbeda ke pekerja yang berbeda, dengan cara yang tidak memungkinkan pesan yang sama dikirimkan ke banyak konsumen. Skenario terakhir ini dicapai dengan grup konsumen .

Redis Streams menyediakan lebih banyak fitur, seperti stempel waktu, pasangan nilai bidang, rentang, dll. Itu tidak berarti Anda harus selalu menggunakan Streams. Jika kasus penggunaan Anda dapat dicapai dengan Pub/Sub, lebih baik Anda menggunakan Pub/Sub. Dengan Streams, Anda harus memperhatikan penggunaan memori.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. cara mengonfigurasi batas waktu JedisConnectionFactory berdasarkan kerangka boot musim semi

  2. redis-server di ubuntu14.04:Alamat ikat sudah digunakan

  3. Cara mengatur kedaluwarsa kunci hash di redis sesuai dengan keberadaan kunci

  4. Redis:Cara mengurai hasil daftar

  5. Proses kerja-kuda dihentikan secara tak terduga RQ dan Scrapy