sql >> Databáze >  >> NoSQL >> Redis

Redis (ioredis) – Nelze zachytit chybu připojení, aby bylo možné je elegantně zvládnout

Chyby připojení jsou hlášeny jako error událost na klientovi Redis objekt.

Podle sekce "Automatické opětovné připojení" v dokumentaci se ioredis automaticky pokusí znovu připojit, když se spojení s Redis ztratí (nebo pravděpodobně nebude možné navázat). Pouze po maxRetriesPerRequest pokusy budou čekající příkazy "vyprázdněny s chybou", tj. dostanou se k catch zde:

  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);
  }

Protože program zastavíte při první chybě:

  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

...opakování a následné "propláchnutí s chybou" nikdy nedostanou příležitost spustit.

Ignorujte chyby v client.on('error' a měli byste dostat chybu z await redisClient.get() .



  1. MongoDB insertOne()

  2. Jak vytvořit vnořený index v MongoDB?

  3. Doporučené postupy pro zálohování databáze

  4. Odstraňte duplikát v MongoDB