根据 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"});
其中第一个数组是读写主机(master),第二个数组是只读主机(slave)。
当我在端口 6379 终止主服务器时,哨兵将从服务器提升为主服务器。现在,当我尝试运行我的 C# 代码时,它并没有故障转移到端口 6380,而是简单地中断并返回错误“无法连接到位于 localhost:6379 的 redis 实例”。
有没有办法解决这个问题,或者故障转移会不会按照我想要的方式工作?
最佳答案
PooledRedisClientManager.FailoverTo 允许您重置哪些是读/写主机,哪些是只读主机,并重启工厂。这允许快速过渡,而无需重新创建客户端。
关于redis - ServiceStack PooledRedisClientManager 故障转移如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17437351/