Sha*_*ove 5 redis node.js node-redis redis-sentinel
我有 2 个 Redis 服务器,一个主服务器,另一个从服务器(复制)。一旦Master由于某种原因宕机了,Slave就会成为Master,并继续充当Master,直到该服务器出现问题为止。
我有一个nodeJS服务器,我想将数据推送到当前作为Master运行的Redis。我有一个监视 Redis 服务器的哨兵,但我的问题是如何使用 nodeJS 从哨兵获取主信息?如果有办法的话,它是否会自动将数据推送到备用redis服务器而无需重新启动任何服务?
ioredis支持哨兵。像这样:
var redis = new Redis({
sentinels: [{ host: 'localhost', port: 26379 }, { host: 'localhost', port: 26380 }],
name: 'mymaster'
});
redis.set('foo', 'bar');
Run Code Online (Sandbox Code Playgroud)
该名称标识一个 Redis 集群,您还应该在 Redis Sentinel.conf 中指定该名称。您可以参考此页面了解如何配置哨兵。
关于你的第二个问题,请看下面:
ioredis 保证您连接的节点即使在故障转移后也始终是主节点。当发生故障转移时,ioredis 将向哨兵询问新的主节点并连接到它,而不是尝试重新连接到故障节点(当它再次可用时,该节点将被降级为从属节点)。故障转移期间发送的所有命令都会排队,并在建立新连接时执行,这样任何命令都不会丢失。
而且node-redis现在还不支持。