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

Pipelining vs Batching di Stackexchange.Redis

Di balik layar, SE.Redis melakukan sedikit pekerjaan untuk mencoba menghindari fragmentasi paket, jadi tidak mengherankan jika hal ini sangat mirip dalam kasus Anda. Perbedaan utama antara batching dan flat pipelining adalah:

  • sebuah batch tidak akan pernah disisipkan dengan operasi yang bersaing pada multiplexer yang sama (walaupun mungkin disisipkan di server; untuk menghindarinya Anda perlu menggunakan multi /exec transaksi atau skrip Lua)
  • sebuah batch akan selalu menghindari kemungkinan paket berukuran kecil, karena ia mengetahui semua data sebelumnya
  • tetapi pada saat yang sama, seluruh batch harus diselesaikan sebelum apa pun dapat dikirim, jadi ini membutuhkan lebih banyak buffering dalam memori dan dapat menimbulkan latensi secara artifisial

Dalam kebanyakan kasus, Anda akan melakukan lebih baik dengan menghindari batching, karena SE.Redis mencapai sebagian besar dari apa yang dilakukannya secara otomatis ketika hanya menambahkan pekerjaan.

Sebagai catatan akhir; jika Anda ingin menghindari overhead lokal, satu pendekatan terakhir mungkin:

redisDB.SetAdd(string.Format(keyFormat, row.Field<int>("Id")),
    row.Field<int>("Value"), flags: CommandFlags.FireAndForget);

Ini mengirimkan semuanya, tidak menunggu tanggapan atau mengalokasikan Task yang tidak lengkap s untuk mewakili nilai masa depan. Anda mungkin ingin melakukan sesuatu seperti Ping di akhir tanpa api-dan-lupa, untuk memeriksa server masih berbicara dengan Anda. Perhatikan bahwa menggunakan fire-and-forget berarti Anda tidak akan melihat kesalahan server yang dilaporkan.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis - cara apa saja untuk memicu suatu peristiwa ketika suatu nilai tidak lagi ditulis secara aktif?

  2. Apakah mungkin untuk memperbarui beberapa kunci hset (bukan bidang) menggunakan mset?

  3. Redis:Urutkan dan dapatkan n Kunci Tetangga

  4. Cara menonaktifkan Redis Caching saat dijalankan jika koneksi redis gagal

  5. StackExchange.Redis - Penggunaan LockTake / LockRelease