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

Redis (ioredis) - Tidak dapat menangkap kesalahan koneksi untuk menanganinya dengan baik

Kesalahan koneksi dilaporkan sebagai error acara pada klien Redis objek.

Menurut bagian "Sambungkan ulang otomatis" dari dokumen, ioredis akan secara otomatis mencoba menyambung kembali ketika koneksi ke Redis terputus (atau, mungkin, tidak dapat dibuat sejak awal). Hanya setelah maxRetriesPerRequest percobaan akankah perintah yang tertunda "dihapus dengan kesalahan", yaitu sampai ke catch di sini:

  try {
    cachedItem = await redisClient.get(queryString); // This emit an error on the redis client, because it fails to connect (that's intended, to test the behaviour)
  } catch (e) {
    logger.error(e); // It never goes there, as the error isn't "thrown", but rather "emitted" and handled by redis its own way
    epsagon.setError(e);
  }

Karena Anda menghentikan program pada kesalahan pertama:

  client.on('error', function (e) {
    // ...
    if (e.message === 'ERR invalid password') {
      logger.error(`Fatal error occurred "${e.message}". Stopping server.`);
      throw e; // Fatal error, don't attempt to fix

... percobaan ulang dan "pembilasan dengan kesalahan" berikutnya tidak pernah berhasil.

Abaikan kesalahan di client.on('error' , dan Anda akan mendapatkan kesalahan yang dikembalikan dari await redisClient.get() .



  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. Mengonfigurasi Apache Reverse Proxy Untuk Hosting Laravel Echo Server Saat Produksi

  3. SpringBoot Elasticache JedisMovedDataException:PINDAH

  4. redis-cli dialihkan ke 127.0.0.1

  5. masalah dalam mengatur backend tugas seledri dengan Python