ServiceStack PooledRedisClientManager故障转移如何工作?

时间:2013-07-02 23:20:26

标签: redis servicestack

根据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实例”。

有没有解决方法,或者故障转移根本不按我想要的方式工作?

1 个答案:

答案 0 :(得分:4)

PooledRedisClientManager.FailoverTo允许您重置哪些是读/写主机,与只读主机相对应,然后重新启动工厂。这允许快速转换而无需重新创建客户端。