- 用法
-
HELLO [ protover [ AUTH username password ] [ SETNAME clientname ] ]
- 复杂度
- O(1)
- 始于
- 6.0.0
- ACL 类别
- @connection, @fast
AUTH <username> <password>
:除了切换到指定的协议版本外,还直接对连接进行身份验证。这使得在设置新连接时,无需在HELLO
之前调用AUTH
。请注意,当服务器不使用 ACL 而使用更简单的requirepass
机制时,username
可以设置为 "default" 进行身份验证。SETNAME <clientname>
:这相当于调用CLIENT SETNAME
。
切换到不同的协议,可选地进行身份验证并设置连接名称,或提供上下文客户端报告。
Valkey 支持两种协议:RESP2 和 RESP3。RESP3 具有某些优势,因为当连接处于此模式时,Valkey 能够回复更具语义的响应:例如,HGETALL
将返回一个 map 类型,因此客户端库实现不再需要预先知道如何将数组转换为哈希再返回给调用者。有关 RESP3 的完整内容,请查阅 RESP3 规范。
Valkey 连接以 RESP2 模式启动,因此实现 RESP2 的客户端无需更新或更改。目前没有短期计划放弃对 RESP2 的支持,尽管未来版本可能会默认使用 RESP3。
HELLO
始终回复当前服务器和连接属性列表,例如:版本、已加载模块、客户端 ID、复制角色等。availability_zone
字段仅在配置文件中设置时显示,有关详细信息请参阅 availability-zone
配置,此功能在 Valkey 8.1 中添加。
当不带任何参数且默认使用 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)
15) "availability_zone"
16) "us-east-1"
希望使用 RESP3 模式进行握手的客户端需要调用 HELLO
命令并将值 "3" 指定为 protover
参数,如下所示
> HELLO 3
1# "server" => "redis"
2# "version" => "7.2.4"
3# "proto" => (integer) 3
4# "id" => (integer) 10
5# "mode" => "standalone"
6# "role" => "master"
7# "modules" => (empty array)
8# "availability_zone" => "us-east-1"
由于 HELLO
会回复有用的信息,并且 protover
是可选的或可以设置为 "2",因此客户端库作者在建立连接时可以考虑使用此命令而不是典型的 PING
。
当带可选的 protover
参数调用时,此命令会将协议切换到指定版本,并接受以下选项
RESP2/RESP3 响应
Map 响应:服务器属性列表。
简单错误响应:如果请求的 protover
不存在。
历史
版本 | 变更 |
---|---|
8.1.0 | 如果设置了 |
6.2.0 |
|