你好
语法
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:服务器属性列表。简单的错误回复:如果protover
requested 不存在。历史
- 从 Redis 版本 6.2.0 开始:
protover
成为可选;当不带参数调用时,该命令将报告当前连接的上下文。