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, а использующем механизмrequirepassRedis версии до 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/