Набор вручную слотов для кластеров Predis

Есть ли способ в Predis определять слоты кластера вручную при создании экземпляра, чтобы избежать случайного выбора сервера и получения конфигурации слотов, чтобы запрос сразу отправлялся на нужный сервер, что ускоряет процесс?


person diegotez    schedule 02.06.2017    source источник


Ответы (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
person nrk    schedule 06.06.2017
comment
Привет, из того, что я тестировал ... это быстрее, чем позволить Predis получить конфигурацию слотов, но не так быстро, как подключение к отдельному узлу кластера в качестве мастера для получения данных непосредственно оттуда (я заранее знаю, что данные находятся в этот узел). Есть ли шанс, что Predis, заранее зная слоты, сможет сделать одно соединение (в зависимости от ключа CRC16) для повышения скорости? Спасибо! - person diegotez; 08.06.2017
comment
Вы можете знать слот заранее, но не связанный с ним узел, поскольку redis-cluster может и будет при необходимости перебалансировать себя. Даже предварительная настройка карты слотов с помощью параметров подключения на самом деле является наилучшей попыткой, и ее следует постоянно обновлять, чтобы она была эффективной. - person nrk; 14.06.2017