问候

语法
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 始终以当前服务器和连接属性的列表进行回复,例如:版本、加载的模块、客户端 ID、复制角色等等。在 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)

想要使用 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>:除了切换到指定的协议版本外,还可以直接对连接进行身份验证。这使得在设置新连接时,在 HELLO 之前调用 AUTH 变得不必要。请注意,username 可以设置为“default”以对不使用 ACL 的服务器进行身份验证,而是对 Redis 6 之前的简单 requirepass 机制进行身份验证。
  • SETNAME <clientname>:这等同于调用 CLIENT SETNAME

RESP2/RESP3 回复

映射回复:服务器属性的列表。 简单错误回复:如果请求的 protover 不存在。

历史

  • 从 Redis 版本 6.2.0 开始:protover 变为可选;在不带参数的情况下调用该命令会报告当前连接的上下文。
RATE THIS PAGE
Back to top ↑