#node.js #redis #node-redis
Вопрос:
Соединение Redis было действительным даже тогда, когда redis-сервер был остановлен и перезапущен без опции retry_strategy.
const conn = redis.createClient({
host: 'redisUrl',
port: 'redisPort',
...
socket_keepalive : true
});
redisClient.on('connect', () => {
console.log(`connect`);
}).on('error', () => {
console.log(`error`);
});
Почему?
Ответ №1:
Да, node-redis
у них была стратегия по умолчанию, как описано в их README. Однако все они теперь устарели в пользу retry_strategy
функциональности.
В частности, ищите retry_max_delay
, connect_timeout
, и max_attempts
.
retry_max_delay null Устарело Пожалуйста, используйте вместо этого retry_strategy. По умолчанию каждый раз, когда клиент пытается подключиться и терпит неудачу, задержка повторного подключения почти удваивается. Эта задержка обычно растет бесконечно, но установка retry_max_delay ограничивает ее максимальным значением, указанным в миллисекундах.
connect_timeout 3600000 Устарел, пожалуйста, используйте вместо этого retry_strategy. Настройка connect_timeout ограничивает общее время подключения и повторного подключения клиента. Значение указывается в миллисекундах и отсчитывается с момента создания нового клиента или с момента потери соединения. Последняя повторная попытка произойдет точно во время тайм-аута. По умолчанию следует пытаться подключиться до тех пор, пока не будет превышен тайм-аут системного сокета по умолчанию, и пытаться повторно подключиться до истечения 1 часа.
max_attempts 0 Устарело, пожалуйста, используйте вместо этого retry_strategy. По умолчанию клиент будет пытаться подключиться повторно, пока не будет подключен. Установка max_attempts ограничивает общее количество попыток подключения. Установка этого значения на 1 предотвратит любую попытку повторного подключения.