使ServiceStack RedisSentinel使用RedisManagerPool而不是PooledRedisClientManager

时间:2018-03-06 12:32:01

标签: servicestack servicestack.redis

使用ServiceStack版本4.0.40。

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

我在文档中看到了这一点......

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

我不确定如何使用它。我传入主主机名吗?如果由于之前的故障转移我不知道哪个是主人怎么办?我不能发送sentinel.start()来找出哪个是master,因为它将以PooledRedisClientManager开头,这不是我想要的。

或者,我是否通过了哨兵宿主? RedisManagerPool获取主机列表,我可以传入sentinel主机,但我无法将其设置为sentinel.RedisManagerFactory,因为RedisManagerFactory不能转换为RedisManagerPool。

我想我在这里缺少一些简单的东西。任何帮助赞赏。

更新

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

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

由于

1 个答案:

答案 0 :(得分:0)

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

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

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