你好

语法
HELLO [protover [AUTH username password] [SETNAME clientname]]
从以下位置开始可用:
6.0.0
时间复杂度:
O(1)
ACL 类别:
@fast, @connection,

切换到其他协议,可以选择进行身份验证并设置 Connection 的名称,或提供上下文相关的客户端报告。

Redis 版本 6 及更高版本支持两种协议:旧协议 RESP2 和 Redis 6 中引入的新功能 RESP3。RESP3 具有一定的优势,因为 当连接处于此模式时,Redis 能够以更语义化的 回复:例如,HGETALL将返回一个 Map 类型,因此 Client 库 实现不再需要提前知道将数组转换为 哈希值,然后再将其返回给调用方。有关 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”,则客户端库作者可以考虑使用它 command 而不是 canonicalPING设置连接时。

当使用可选的protover参数,此命令将 protocol 设置为指定版本,并且还接受以下选项:

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

RESP2/RESP3 回复

Map reply:服务器属性列表。简单的错误回复:如果protoverrequested 不存在。

历史

  • 从 Redis 版本 6.2.0 开始:protover成为可选;当不带参数调用时,该命令将报告当前连接的上下文。
为本页评分
返回顶部 ↑