Node.js / Redis - Tunggu koneksi?

Saya sedang mengembangkan aplikasi di Node.js yang menggunakan Redis sebagai database utamanya dan kembali ke MySQL ketika Redis tidak tersedia.

Masalah yang saya alami adalah, berbeda dengan node-mysql, node_redis tidak menerima panggilan balik pada metode createClient() dan hanya mengeluarkan kesalahan jika gagal.

Bagaimana saya bisa menyusun kode saya untuk mengatasi hal ini?

Yang saya perlukan pada dasarnya adalah ini (kode semu):

if can_connect_on_redis
    use_redis
else
    if can_connect_mysql
       use_mysql
    else
       fail
    end
end

person Schrute    schedule 21.09.2014    source sumber


Jawaban (1)


Belum dicoba:

var client  = redis.createClient();
var isReady = false;
var isError = false;

client.on('error', function() {
  if (! isReady && ! isError) {
    // perform your MySQL setup here
  }
  isError = true;
}).on('ready', function() {
  isReady = true;
});

Idenya adalah ketika Anda mendapatkan kesalahan sebelum klien siap, Anda dapat berasumsi bahwa koneksi ke Redis gagal dan Anda dapat kembali menggunakan MySQL. Karena klien akan mencoba menyambung kembali, ia akan terus menghasilkan kejadian kesalahan, oleh karena itu penjaga isError.

Jika Anda ingin kembali ke MySQL setelah klien (berhasil) dapat mengatur koneksi (misalnya, ketika server Redis dihentikan), Anda dapat menghapus logika isReady.

person robertklep    schedule 21.09.2014
comment
terima kasih! kode Anda berfungsi dengan baik, saya baru saja menambahkan sedikit logika untuk memeriksa jumlah upaya koneksi, dan setelah mencapai 3 saya memanggil client.end() untuk berhenti mencoba dan menggunakan mysql - person Schrute; 21.09.2014