node-redis
具有出色的功能,可以在一切正常运行时处理任何Redis断开连接。如果Redis示例变得不可用,使用适当的retry_strategy
意味着客户端可以设置为尝试重新连接,直到Redis再次可用。
Redis宕机的情况下,客户端是否可以在启动时进入该状态?
我的场景是这样的:我使用Redis作为主数据存储,并使用一个不基于Redis的备用辅助数据存储。当我的应用程序启动时,如果Redis不可用,则尝试检索数据将使用辅助数据存储。
然而,当Redis可用时,我希望我的应用程序开始使用Redis主数据存储。由于Redis连接在启动时没有成功,因此retry_strategy
无法为先前建立的连接处理此问题。
我可以编写代码,重试最初的Redis连接,直到成功,但它让我感到,如果我能说服它从启动开始发挥作用,即使Redis关闭,可用的开箱即用的功能已经非常接近我所需要的。
3条答案
按热度按时间oxf4rvwz1#
retry_strategy实际上可以返回一个以毫秒为单位的数字,以尝试在该时间之后重试连接。如果在节点启动时连接关闭,您可以在错误代码为NR_CLOSED或ECONNREFUSED时返回例如5000,以在5秒后重试。
示例:
并使用以下重试策略创建客户端:
bttbmeg02#
默认情况下,客户端会尝试重新连接,直到连接。如果你想自定义它,你可以使用选项对象属性中的retry_strategy。你可以知道什么时候连接了redis,因为它会发出一个事件
您可以稍后决定连接后如何处理
hsvhsicv3#
在客户端选项的套接字部分中使用reconnectStrategy。在下面的示例中使用指数回退