如何在Node.js中检测Redis客户端断开连接?

9
我正在编写一个微服务消息客户端,并使用库node_redis作为客户端。客户从其应用程序的发件箱中获取消息,需要将其发送到其他服务。一切都很好,但我想在与redis服务器通信的应用程序方面构建一些弹性。

我的想法是,redis客户端-服务器连接状态应该对客户端高度可用。我的意思是,如果连接断开,我想在一秒钟内得知而不是默认超时时间300秒。目前,我正在使用托管在AWS上的免费redislabs版,但我应该将其移动到自己的容器中,在我的kubernetes集群中运行。

我需要了解网络中客户端连接的状态,因为我希望在网络条件不正确时不发送消息,并且不依赖于错误处理来处理此类事件。了解这些高延迟事件发生的频率和时间也将帮助我诊断和改进我的网络和微服务。

注意:我想在客户端选项中设置connect_timeout值,但已列为弃用。

你不能使用"retry_strategy"选项吗?当库尝试重新连接到redis服务器时,也会触发一个事件(reconnecting)。公平地说,这个事件并不是你要寻找的,因为它是在库尝试重新连接而不是连接丢失时被触发的,但你可以将其与自定义重试策略一起使用。 - Siggy
你是怎么处理这个问题的? - Ed Spencer
1个回答

2

您需要的是这样的翻译吗?

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();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接