6

根据 git commit 消息,ServiceStack 最近添加了故障转移支持。我最初认为这意味着我可以关闭我的一个 Redis 实例,而我的池化客户端管理器将优雅地处理故障转移并尝试连接我的备用 Redis 实例之一。不幸的是,我的代码出错了,说它无法与初始 Redis 实例连接。

我目前在 Windows 上运行 Redis 2.6.12 的实例,主端口位于 6379 端口,从端口位于 6380,设置哨兵以在主节点出现故障时自动将从节点提升为主节点。我目前正在像这样实例化我的客户经理:

PooledRedisClientManager pooledClientManager =
    new PooledRedisClientManager(new string[1] { "localhost:6379"},
        new string[1] {"localhost:6380"});

其中第一个数组是读写主机(用于主机),第二个数组是只读主机(用于从机)。

当我在端口 6379 终止主服务器时,哨兵将从服务器提升为主服务器。现在,当我尝试运行我的 C# 代码时,它并没有故障转移到端口 6380,而是简单地中断并返回错误“无法在 localhost:6379 连接到 redis 实例”。

有没有办法解决这个问题,或者故障转移根本无法按照我想要的方式工作?

4

1 回答 1

4

PooledRedisClientManager.FailoverTo允许您重置哪些是读/写主机,哪些是只读主机,并重新启动工厂。这允许快速过渡而无需重新创建客户端。

于 2013-09-03T21:45:18.217 回答