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

Redis replikasi aktif-aktif

Redis v2.8.3 tidak mendukung pengaturan multi-master. Namun, pertanyaan sebenarnya adalah mengapa Anda ingin mengaturnya? Dengan kata lain, tantangan/masalah apa yang ingin Anda selesaikan?

Sepertinya tantangan yang Anda coba selesaikan adalah bagaimana mengurangi beban jaringan (lebih lanjut tentang itu di bawah) dengan menghilangkan pembacaan over-the-net. Karena Redis belum multi-master (belum), satu-satunya cara untuk melakukannya adalah dengan menyiapkan setiap server aplikasi dengan master dan budak (ke master lain) - yaitu total total 4 instance Redis (dan dua kali RAM).

Skenario sederhananya adalah ketika setiap aplikasi hanya memperbarui subset kunci database yang saling eksklusif. Dalam skenario itu, pengaturan semacam ini sebenarnya bisa bermanfaat (setidaknya dalam jangka pendek). Namun, jika kedua aplikasi dapat menyentuh semua tombol atau jika hanya satu tombol yang "dibagikan" untuk penulisan antar aplikasi, maka Anda harus memasukkan logika penguncian/resolusi konflik/dll... ke dalam aplikasi Anda untuk mengkonsolidasikan master lokal dan perbedaan budak (dan itu mungkin sedikit berlebihan). Namun, dalam kedua kasus tersebut, Anda akan mendapatkan terlalu banyak (yaitu lebih dari 1) Redise, yang berarti setidaknya lebih banyak upaya admin.

Perhatikan juga bahwa dengan menempatkan aplikasi dan database di server yang sama, Anda mengatur diri Anda sendiri untuk kegagalan skalabilitas yang hampir pasti. Apa yang akan terjadi jika Anda membutuhkan lebih banyak sumber daya komputasi untuk aplikasi atau Redis Anda? Bagaimana Anda akan menambahkan server aplikasi lain ke dalam campuran?

Yang membawa saya kembali ke masalah sebenarnya yang Anda coba selesaikan - beban jaringan. Mengapa sebenarnya itu menjadi masalah? Apakah aplikasi Anda sangat berat atau jaringannya sangat tipis sehingga Anda bersedia melakukan sejauh itu? Atau mungkin latensi adalah masalah yang ingin Anda selesaikan? Apa pun masalahnya, saya sarankan Anda mempertimbangkan desain yang telah terbukti waktu, yaitu memisahkan Redis dari aplikasi dan meletakkannya di sumber dayanya sendiri. Benar, jaringan akan memukul Anda di wajah dan Anda harus mengatasinya/dengan itu (yang dilakukan orang lain). Di sisi lain, Anda akan memiliki lebih banyak fleksibilitas dan kontrol atas penyiapan Anda yang jauh lebih sederhana dan itu, dalam buku saya, adalah keuntungan besar.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara Menggunakan Redis Dengan Python

  2. budak redis tidak akan disinkronkan dengan master

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

  4. hdel di dalam hget blok nodejs redis

  5. Menemukan nilai dengan menggunakan nama kunci parsial dalam Redis Sorted Set