草庐IT

redis - ServiceStack PooledRedisClientManager 故障转移如何工作?

coder 2023-07-17 原文

根据 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/

有关redis - ServiceStack PooledRedisClientManager 故障转移如何工作?的更多相关文章

随机推荐