node.js - 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-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 限制客户端连接和重新连接的总时间。该值以毫秒为单位,从创建新客户端或从连接丢失时开始计算。最后一次重试将恰好在超时时间发生。默认是尝试连接,直到超过默认的系统套接字超时,并尝试重新连接,直到 1h 过去。
max_attempts 0 已弃用 请改用 retry_strategy。默认情况下,客户端将尝试重新连接,直到连接。设置 max_attempts 限制连接尝试的总数。将此设置为 1 将阻止任何重新连接尝试。
推荐阅读
- r - How to use stringr functions to remove all empty words?
- python - 使用 Python 运行外部应用程序并在内部调用它们的方法
- arrays - 我可以在标题中初始化一个数组吗?
- android - 如何在非根设备上编辑构建道具?
- bash - 如何根据它们的编号命名 bash 脚本参数
- javascript - 未找到模块:包路径。不是从包中导出的
- django - Django - 如何使用带有自定义字段的 UpdateView modelform?
- android-studio - 如何进行 Android 测试 - Tesseract OCR?如何在 Junit 中访问 MainActivity 上下文?
- flutter - Flutter Navigator popUntil 方法不会在我想要的命名路由处停止,并弹出所有屏幕
- python - 在不和谐机器人中从 Python 中的另一个文件导入命令时出错