首页 > 解决方案 > node-redis retry_strategy 有默认值吗?

问题描述

即使 redis-server 在没有 retry_strategy 选项的情况下停止并重新启动,Redis 连接仍然有效。

const conn = redis.createClient({
    host: 'redisUrl',
    port: 'redisPort',
    ...
    socket_keepalive : true   
});

redisClient.on('connect', () => {
    console.log(`connect`);
}).on('error', () => {
    console.log(`error`);
});

为什么?

标签: node.jsredisnode-redis

解决方案


是的,node-redis确实有他们的README中概述的默认策略。但是,现在所有这些都被弃用以支持retry_strategy功能。

具体来说,寻找retry_max_delayconnect_timeoutmax_attempts

retry_max_delay null 不推荐使用 请改用 retry_strategy。默认情况下,每次客户端尝试连接但失败时,重新连接延迟几乎翻倍。此延迟通常会无限增长,但设置 retry_max_delay 会将其限制为以毫秒为单位提供的最大值。

connect_timeout 3600000 已弃用 请改用 retry_strategy。设置 connect_timeout 限制客户端连接和重新连接的总时间。该值以毫秒为单位,从创建新客户端或从连接丢失时开始计算。最后一次重试将恰好在超时时间发生。默认是尝试连接,直到超过默认的系统套接字超时,并尝试重新连接,直到 1h 过去。

max_attempts 0 已弃用 请改用 retry_strategy。默认情况下,客户端将尝试重新连接,直到连接。设置 max_attempts 限制连接尝试的总数。将此设置为 1 将阻止任何重新连接尝试。


推荐阅读