如何在nodejs中检测客户端与redis的断开连接?
Posted
技术标签:
【中文标题】如何在nodejs中检测客户端与redis的断开连接?【英文标题】:How to detect client disconnect from redis in nodejs? 【发布时间】:2018-04-25 11:48:16 【问题描述】:我正在使用库node_redis 作为我正在编写的微服务消息客户端的客户端。客户端在他们的发件箱中从他们的应用程序中获取他们需要发送到其他服务的消息。一切都很好,但我正在尝试为使用 redis 客户端与 redis-server 通信的应用程序部分建立一些弹性。
我的想法是redis客户端-服务器连接状态应该对客户端高度可用。我的意思是,如果连接断开,我想在一秒钟内知道,而不是默认超时 300 秒。目前我正在使用托管在 AWS 上的免费 redislabs 层,但我应该将它移动到我的 kubernetes 集群上它自己的容器中运行。
我需要知道网络中客户端连接的状态,因为我不想在网络条件不正确时不发送消息,并且不依赖错误处理来处理此类事件。了解这些高延迟事件发生的频率和时间也将有助于我诊断和改进我的网络和微服务。
注意:我想在客户端选项中设置 connect_timeout 值,但它被列为已弃用。
【问题讨论】:
你不能使用“retry_strategy”选项吗?当库尝试重新连接到 redis 服务器时,还会触发一个事件(重新连接)。公平地说,这个事件不是你想要的,因为它是在库尝试重新连接时发出的,而不是在连接丢失时发出的,但你可以将它与自定义重试策略一起使用。 你是怎么处理这个问题的? 【参考方案1】:类似的东西?
var redis = require('redis');
var client = redis.createClient();
var reconnectAfter = 15000;
client.on( 'error', function ()
console.log( (new Date()) + " Redis: disconnect");
setTimeout( connect, reconnectAfter);
);
connect = function()
client = redis.createClient();
【讨论】:
以上是关于如何在nodejs中检测客户端与redis的断开连接?的主要内容,如果未能解决你的问题,请参考以下文章