Verbindungsfehler werden als error
gemeldet Ereignis auf dem Client Redis
Objekt.
Gemäß dem Abschnitt „Auto-Reconnect“ der Dokumentation versucht Ioredis automatisch, die Verbindung wiederherzustellen, wenn die Verbindung zu Redis unterbrochen wird (oder vermutlich überhaupt nicht hergestellt werden kann). Erst nach maxRetriesPerRequest
Versuche werden die anstehenden Befehle "mit einem Fehler gespült", d.h. zum catch
gelangen hier:
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);
}
Da Sie Ihr Programm beim ersten Fehler stoppen:
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
... die Wiederholungsversuche und das anschließende "Flushing with a error" niemals ausgeführt werden können.
Ignorieren Sie die Fehler in client.on('error'
, und Sie sollten den Fehler erhalten, der von await redisClient.get()
zurückgegeben wird .