使 ServiceStack RedisSentinel 使用 RedisManagerPool 而不是 PooledRedisClientManager

Making ServiceStack RedisSentinel use a RedisManagerPool instead of a PooledRedisClientManager

使用 ServiceStack 版本 4.0.40。

我正在尝试让 RedisSentinel 使用 RedisManagerPool 而不是 PooledRedisClientManager 因此它将允许超过客户端池大小的客户端。

我在文档中看到这个设置...

sentinel.RedisManagerFactory = (master,slaves) => new RedisManagerPool(master);

我不确定如何使用它。我是否传递主控主机名?如果我因为之前的故障转移而不知道哪个是 master 怎么办?我无法 sentinel.start() 找出哪个是 master,因为它将以 PooledRedisClientManager 开始,这不是我想要的。

或者,我是否传入哨兵主机? RedisManagerPool 需要一个主机列表,我可以传入哨兵主机,但我不能将它设置为 sentinel.RedisManagerFactory,因为 RedisManagerFactory 不能转换为 RedisManagerPool。

我想我在这里遗漏了一些简单的东西。任何帮助表示赞赏。

更新

根据下面 mythz 的评论,这在 ServiceStack 4.0.40 版中不可用。但是你可以使用;

  sential.RedisManagerFactory.FactoryFn = (master, slaves) => new RedisManagerPool(master);

谢谢

这实际上是您需要用来更改 RedisSentinel 以使用 RedisManagerPool 的配置:

sentinel.RedisManagerFactory = (master,slaves) => 
    new RedisManagerPool(master);

您不需要传递任何其他内容,master 主机参数使用 lambda 参数。