Spec-Zone.ru › Redis

HELLO

HELLO
Синтаксис
HELLO [protover [AUTH username password] [SETNAME clientname]]
Доступно с версии:
6.0.0
Сложность по времени:
O(1)
Категории ACL:
@fast, @connection,

Переключиться на другой протокол, при необходимости выполнить аутентификацию и задать имя подключения, или предоставить контекстуальный отчёт клиента.

Версии Redis 6 и выше поддерживают два протокола: старый протокол RESP2 и новый, представленный в Redis 6, RESP3. RESP3 обладает определёнными преимуществами, так как при подключении в этом режиме Redis может возвращать более содержательные ответы: например, HGETALL вернёт тип массив, поэтому реализации библиотек клиента больше не требуется предварительно знать, как преобразовать массив в хеш, прежде чем вернуть его вызывающей стороне. Для получения полного обзора RESP3, пожалуйста, ознакомьтесь со спецификацией RESP3.

При подключении в Redis 6 используется режим RESP2, поэтому клиентам, реализующим RESP2, не нужно обновлять или изменять код. Планов по прекращению поддержки RESP2 в ближайшее время нет, хотя в будущих версиях может быть по умолчанию выбран RESP3.

HELLO всегда возвращает список текущих свойств сервера и подключения, таких как: версии, загруженные модули, идентификатор клиента, роль репликации и так далее. Если вызов выполнен без аргументов в Redis 6.2 и при использовании протокола RESP2 по умолчанию, ответ выглядит следующим образом:

> HELLO
 1) "server"
 2) "redis"
 3) "version"
 4) "255.255.255"
 5) "proto"
 6) (integer) 2
 7) "id"
 8) (integer) 5
 9) "mode"
10) "standalone"
11) "role"
12) "master"
13) "modules"
14) (empty array)

Клиенты, которые хотят использовать режим handshake RESP3, должны вызвать команду HELLO и указать значение "3" в качестве аргумента protover, как показано ниже:

> HELLO 3
1# "server" => "redis"
2# "version" => "6.0.0"
3# "proto" => (integer) 3
4# "id" => (integer) 10
5# "mode" => "standalone"
6# "role" => "master"
7# "modules" => (empty array)

Поскольку HELLO возвращает полезную информацию, и поскольку protover является необязательным или может быть установлено в "2", авторы библиотек клиентов могут рассмотреть возможность использования этой команды вместо стандартной команды PING при настройке подключения.

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

  • AUTH <username> <password>: напрямую выполняет аутентификацию подключения дополнительно к переключению на указанную версию протокола. Это делает вызов AUTH перед HELLO ненужным при настройке нового подключения. Обратите внимание, что username может быть установлено в "default", чтобы выполнить аутентификацию на сервере, не использующем ACL, а использующем механизм requirepass Redis версии до 6.
  • SETNAME <clientname>: это эквивалентно вызову CLIENT SETNAME.

Возвращаемое значение

Массивный ответ: список свойств сервера. Ответ представляет собой карту вместо массива, если выбран RESP3. Команда возвращает ошибку, если запрошенного protover не существует.

История

  • Начиная с версии Redis 6.2.0: protover стала необязательной; если вызов сделан без аргументов, команда сообщает текущий контекст подключения.

© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/hello/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API