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

Apakah Stackexchange.Redis menyala dan lupa menjamin pengiriman?

Sebenarnya, protokol Redis tidak benar-benar mendukung operasi "api dan lupakan". Kecuali lalu lintas pub/sub, semua perintah Redis dicocokkan dengan balasan, dan tidak ada cara untuk memberi tahu server Redis untuk menghilangkan balasan.

Sekarang beberapa klien (seperti StackExchange.Redis) mensimulasikan mode "api dan lupakan" melalui implementasi protokol yang tidak sinkron. Sebenarnya, mode "api dan lupakan" di StackExchange.Redis sangat mirip dengan mode "asinkron", kecuali balasannya dibuang begitu saja saat diterima.

Apakah itu dapat diandalkan? Yah, itu menjamin pengiriman sejauh TCP/IP menjamin pengiriman. Jaringan akan berusaha keras untuk mengirimkan paket-paket tersebut (pada akhirnya paket-paket tersebut akan ditransmisikan kembali jika beberapa di antaranya hilang), tetapi ini semua ditangani oleh TCP.

Sekarang jika server sedang down, atau memutuskan untuk menutup koneksi, klien hanya akan sadar ketika mencoba membaca dari soket. StackExchange.Redis mungkin dengan senang hati terus mengirim perintah pada koneksi mati untuk sementara waktu. Jika Anda memiliki middletier (seperti Twemproxy), situasinya bisa lebih buruk.

Dengan kata lain, lalu lintas "api dan lupakan" umumnya akan dikirim ke server, dan tidak ada pesan yang akan hilang di jaringan, tetapi jika Anda memiliki masalah server atau koneksi, beberapa lalu lintas dapat hilang sebelum klien sempat menyadarinya. dia. Saya akan menyebutnya sebagai perilaku upaya terbaik.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Set redis vs hash

  2. Menghubungkan ke RedisToGo melalui Node.JS

  3. Tambahkan Kedaluwarsa ke Redis Cache

  4. StackExchange.Redis.RedisTimeoutException:Batas waktu menunggu tanggapan

  5. Bagaimana cara menggunakan redis PUBLISH/SUBSCRIBE dengan nodejs untuk memberi tahu klien ketika nilai data berubah?