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

Redis Pub/Sub dengan Keandalan

Ketika seorang pelanggan (konsumen) meninggal, daftar Anda akan terus bertambah sampai klien kembali. Produser Anda dapat memangkas daftar (dari kedua sisi) setelah mencapai batas tertentu, tetapi itu adalah sesuatu yang perlu Anda tangani di tingkat aplikasi. Jika Anda menyertakan stempel waktu dalam setiap pesan, konsumen Anda kemudian dapat bertindak berdasarkan usia pesan, dengan asumsi Anda memiliki logika aplikasi yang ingin Anda terapkan pada usia pesan.

Saya tidak yakin bagaimana pesan yang salah akan masuk ke sistem, karena koneksi ke Redis biasanya TCP dengan jaminan integritasnya. Namun jika hal ini terjadi, mungkin karena adanya bug dalam pengkodean pesan pada lapisan produser, Anda dapat menyediakan mekanisme umum untuk menangani kesalahan dengan menjaga antrian per produsen yang menerima pesan pengecualian konsumen.

Kebijakan coba lagi akan sangat bergantung pada kebutuhan aplikasi Anda. Jika Anda memerlukan jaminan 100% bahwa pesan telah diterima dan diproses, maka Anda harus mempertimbangkan untuk menggunakan transaksi Redis (MULTI/EXEC) untuk menyelesaikan pekerjaan yang dilakukan oleh konsumen, sehingga Anda dapat memastikan bahwa klien tidak menghapus pesan kecuali itu telah menyelesaikan pekerjaannya. Jika Anda memerlukan pengakuan eksplisit, Anda dapat menggunakan pesan ACK eksplisit pada antrean yang didedikasikan untuk proses produser.

Tanpa mengetahui lebih banyak tentang kebutuhan aplikasi Anda, sulit untuk mengetahui cara memilih dengan bijak. Umumnya, jika pesan Anda memerlukan perlindungan ACID penuh, maka Anda mungkin juga perlu menggunakan transaksi redis. Jika pesan Anda hanya bermakna ketika tepat waktu, maka transaksi mungkin tidak diperlukan. Kedengarannya seolah-olah Anda tidak dapat mentolerir pesan yang dijatuhkan, jadi pendekatan Anda dalam menggunakan daftar adalah baik. Jika Anda perlu menerapkan antrean prioritas untuk pesan Anda, Anda dapat menggunakan kumpulan yang diurutkan (perintah-Z) untuk menyimpan pesan Anda, menggunakan prioritasnya sebagai nilai skor, bersama dengan konsumen polling.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana saya bisa menggunakan Tornado dan Redis secara tidak sinkron?

  2. Rails Redis mengatur maxmemory dan maxmemory-policy

  3. Bagaimana cara menghapus Heroku Redis?

  4. Bagaimana ServiceStack Redis berfungsi dalam mengambil data

  5. Performa Redis vs Disk dalam aplikasi caching