【问题标题】:Predis cluster slots manual setPredis 集群插槽手动设置
【发布时间】:2017-06-02 13:09:33
【问题描述】:

在 Predis 中是否有任何方法可以在创建实例时手动定义集群槽,以避免随机选择服务器并获取槽配置,以便立即将请求直接发送到正确的服务器,从而加快处理速度?

【问题讨论】:

    标签: redis predis


    【解决方案1】:

    是的,您可以使用连接参数来做到这一点:

    $client = new Predis\Client([
        'tcp://node01?slots=0-5460',
        'tcp://node02?slots=5461-10922',
        'tcp://node03?slots=10923-16383',
    ], ['cluster' => 'redis']);
    

    “slots”连接参数可以接受以逗号分隔的单个插槽列表和连续插槽范围,例如:

    tcp://node01?slots=0,20-30,5461-10922
    

    【讨论】:

    • 嗨,根据我的测试...这比让 Predis 获取插槽配置要快,但不如连接到集群单节点作为主节点直接从那里获取数据快(我事先知道数据在那个节点中)。 Predis 是否有机会提前知道插槽,可以进行单个连接(取决于密钥 CRC16)以提高速度?谢谢!
    • 你可能会提前知道 slot,但不知道与其关联的节点,因为 redis-cluster 可以并且会在需要时重新平衡自身。即使通过连接参数预先配置槽图实际上也是一个最佳猜测,它应该保持更新以保持有效。
    • 也许你可以试试这样的东西gist.github.com/nrk/e1463f6c81f4f70427f9fab2ef202777 它没有经过测试,因为我正在记忆中,但它应该可以工作,你基本上用你的插槽映射配置客户端,然后你获取底层连接到特定的插槽并从该连接实例中创建一个新的客户端实例。不过,这与 Predis 内部已经做的并没有什么不同。
    猜你喜欢
    • 2014-09-05
    • 1970-01-01
    • 2021-10-19
    • 2015-11-01
    • 2018-01-30
    • 2021-07-12
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多