2017-08-31 150 views
1

我有2个Redis服务器一个主机和另一个从机(复制)。一旦师父由于某些原因而关闭,奴隶将成为主人,并继续作为主人,直到该服务器发生错误。使用来自nodeJS的sentinal识别Redis主机

我有一个nodeJS服务器,我想将数据推送到当前作为主服务器运行的Redis。我有一个监控Redis服务器的定点,但我的问题是如何使用nodeJS从定点抓取主信息? 如果有办法,它是否会自动将数据推送到备用redis服务器,而无需重新启动服务?

回答

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现在不支持它。