CLUSTER
CLUSTER SLOTS (deprecated)
Начиная с версии Redis 7.0.0, эта команда считается устаревшей.
Её можно заменить на CLUSTER SHARDS при миграции или написании нового кода.
CLUSTER SLOTS
- Доступна с версии:
- 3.0.0
- Сложность по времени:
- O(N), где N — общее количество узлов кластера
- Категории ACL:
-
@slow,
CLUSTER SLOTS возвращает сведения о том, какие слоты кластера отображаются на какие экземпляры Redis. Команда подходит для использования реализациями библиотек клиентов Redis Cluster для получения (или обновления при получении перенаправления) отображения, сопоставляющего хеш-слоты кластера с фактической сетевой информацией узлов, чтобы при получении команды её можно было отправить тому экземпляру, который, скорее всего, отвечает за ключи, указанные в команде.
Сетевая информация для каждого узла представляет собой массив, содержащий следующие элементы:
- Предпочитаемый конечный пункт (либо IP-адрес, имя хоста или NULL)
- Номер порта
- Идентификатор узла
- Карта дополнительной сетевой метаданных
Предпочитаемый конечный пункт, наряду с портом, определяет место, которое клиенты должны использовать для отправки запросов для данного слота. Значение NULL для конечного пункта указывает, что у узла неизвестный конечный пункт, и клиент должен подключиться к тому же конечном пункту, что использовался для отправки команды CLUSTER SLOTS , но с портом, возвращенным командой. Эта конфигурация неизвестного конечного пункта полезна, когда узлы Redis находятся за балансировщиком нагрузки, конечный пункт которого Redis не знает. Какой конечный пункт устанавливается как предпочитаемый, определяется конфигурацией cluster-preferred-endpoint-type.
Дополнительная сетевая метаданные предоставляется в виде карты в четвёртом аргументе для каждого узла. Могут быть возвращены следующие сетевые метаданные:
- IP: Когда предпочитаемый конечный пункт не установлен на IP.
- Имя хоста: Когда у узла объявлено имя хоста, но первичный конечный пункт не установлен на имя хоста.
Вложенный массив результатов
Каждый вложенный результат содержит:
- Начальный диапазон слотов
- Конечный диапазон слотов
- Мастер для диапазона слотов, представленный как вложенная сетевая информация
- Первый реплики мастера для диапазона слотов
- Второй реплики
- …продолжается до тех пор, пока не будут возвращены все реплики для этого мастера.
Каждый результат включает все активные реплики экземпляра мастера для указанного диапазона слотов. Неудачные реплики не возвращаются.
Третий вложенный ответ гарантирует, что это сетевая информация экземпляра мастера для диапазона слотов. Вся сетевая информация после третьего вложенного ответа — это реплики мастера.
Если у экземпляра кластера есть несмежные слоты (например, 1-400,900,1800-6000), то результаты сетевой информации мастера и реплики будут дублироваться для каждого ответа диапазона слотов верхнего уровня.
Возврат
Массивная реакция: вложенный список диапазонов слотов с сетевой информацией.
Примеры
> CLUSTER SLOTS
1) 1) (integer) 0
2) (integer) 5460
3) 1) "127.0.0.1"
2) (integer) 30001
3) "09dbe9720cda62f7865eabc5fd8857c5d2678366"
4) 1) hostname
2) "host-1.redis.example.com"
4) 1) "127.0.0.1"
2) (integer) 30004
3) "821d8ca00d7ccf931ed3ffc7e3db0599d2271abf"
4) 1) hostname
2) "host-2.redis.example.com"
2) 1) (integer) 5461
2) (integer) 10922
3) 1) "127.0.0.1"
2) (integer) 30002
3) "c9d93d9f2c0c524ff34cc11838c2003d8c29e013"
4) 1) hostname
2) "host-3.redis.example.com"
4) 1) "127.0.0.1"
2) (integer) 30005
3) "faadb3eb99009de4ab72ad6b6ed87634c7ee410f"
4) 1) hostname
2) "host-4.redis.example.com"
3) 1) (integer) 10923
2) (integer) 16383
3) 1) "127.0.0.1"
2) (integer) 30003
3) "044ec91f325b7595e76dbcb18cc688b6a5b434a1"
4) 1) hostname
2) "host-5.redis.example.com"
4) 1) "127.0.0.1"
2) (integer) 30006
3) "58e6e48d41228013e5d9c1c37c5060693925e97e"
4) 1) hostname
2) "host-6.redis.example.com"
Предупреждение: В будущих версиях может быть больше элементов, лучше описывающих узел. В общем случае реализация клиента должна полагаться на тот факт, что определенные параметры находятся на фиксированных позициях, как указано, но могут следовать и другие параметры, которые следует игнорировать. Аналогично, библиотека клиента должна по возможности справиться с тем, что более старые версии могут иметь только параметр первичного конечного пункта и порта.
История изменений поведения
-
>= 7.0.0: Добавлена поддержка имен хостов и неизвестных конечных точек в первом поле ответа узла.
История
- Начиная с версии Redis 4.0.0: Добавлены идентификаторы узлов.
- Начиная с версии Redis 7.0.0: Добавлено дополнительное поле сетевой метаданных.
© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/cluster-slots/