【问题标题】:Identifying Redis Master using sentinal from nodeJS使用来自nodeJS的哨兵识别Redis Master
【发布时间】:2018-02-08 23:40:05
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案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如何配置哨兵。

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

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

    而且node-redis现在不支持了。

    【讨论】:

      猜你喜欢
      • 2020-03-15
      • 1970-01-01
      • 2020-05-01
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 2013-10-19
      • 1970-01-01
      相关资源
      最近更新 更多