使用nodeJS的sentinal识别Redis Master

时间:2017-08-31 06:00:47

标签: node.js redis node-redis redis-sentinel

我有2个Redis服务器,一个主服务器和另一个服务器(复制)。一旦Master由于某些原因而关闭,奴隶将成为Master并且继续充当Master,直到该服务器发生错误。

我有一个nodeJS服务器,我想从中将数据推送到当前作为Master运行的Redis。我有一个监控Redis服务器的标记,但我的问题是如何使用nodeJS从sentinel获取主信息? 如果有办法,是否会自动将数据推送到备用redis服务器而不重启任何服务?

1 个答案:

答案 0 :(得分:1)

ioredis支持哨兵。像这样:

var redis = new Redis({
  sentinels: [{ host: 'localhost', port: 26379 }, { host: 'localhost', port: 26380 }],
  name: 'mymaster'
});

redis.set('foo', 'bar');

该名称标识一个redis集群,您还应该在redis sentinel.conf中指定该集群。您可以参考page来了解如何配置sentinel。

关于第二个问题,请参阅以下内容:

  

ioredis保证即使在故障转移后,您连接的节点也始终是主节点。当发生故障转移时,而不是尝试重新连接到故障节点(当它发生故障时将被降级为从节点)再次可用),ioredis将向哨兵询问新的主节点并连接到它。故障转移期间发送的所有命令都会排队,并在建立新连接时执行,这样就不会丢失任何命令。

node-redis现在不支持它。