使用nodeJS的sentinal识别Redis Master

我有2个Redis服务器一个主机和另一个从机(复制)。 一旦师父由于某些原因被closures,奴隶将成为主人,并继续作为主人,直到该服务器发生错误。

我有一个nodeJS服务器,我想将数据推送到当前以Master身份运行的Redis。 我有一个监控Redis服务器的哨兵,但我的问题是如何使用nodeJS从sentinel获取主信息? 如果有办法,它是否会自动将数据推送到备用的redis服务器,而无需重启服务?

ioredis支持哨兵。 喜欢这个:

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

该名称标识了redis集群,您应该在redis sentinel.conf中指定该集群。 你可以参考这个页面如何configuration哨兵。

关于你的第二个问题,见下文:

ioredis保证连接到的节点即使在故障转移后也始终是主节点。 当故障转移发生时,ioredis将不会尝试重新连接到故障节点(它会在再次可用时降级到从属节点),而是要求新节点连接到它。 故障转移过程中发送的所有命令都会排队,并在build立新连接时执行,这样就不会丢失任何命令。

而node-redis现在不支持。