代码之家  ›  专栏  ›  技术社区  ›  Dan

使ServiceStack RedisSentinel使用RedisManagerPool而不是PooledRedisClientManager

  •  1
  • Dan  · 技术社区  · 6 年前

    使用ServiceStack版本4.0.40。

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

    我在文档中看到此设置。。。

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

    我不知道怎么用这个。我是否传入主主机名?如果由于以前的故障切换,我不知道哪个是主服务器,该怎么办?我不能监视。start()找出哪个是master,因为它将从PooledRedisClientManager开始,这不是我想要的。

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

    我想我错过了一些简单的东西。感谢您的帮助。

    更新

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

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

    谢谢

    1 回复  |  直到 6 年前
        1
  •  0
  •   mythz    6 年前

    这是将RedisSentinel更改为使用RedisManagerPool所需的配置:

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

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