GCP Memorystore Redis:协议错误,得到“\x15”作为回复类型字节

Did*_*les 6 redis google-cloud-memorystore

我已经研究这个 Redis 错误好几天了......

我创建了一个 GCP Memorystore Redis 实例并收到以下内部 IP 端点:

10.xxx.xxx.xxx:6378
Run Code Online (Sandbox Code Playgroud)

我创建了一个小型 GCE 实例,并确保该区域与 Redis 实例匹配:

us-central1-f
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,当我 ssh 进入 VM、连接到 Redis 并发出 PING 时,我收到以下错误响应

Protocol error, got "\x15" as reply type byte
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

知道为什么我会收到此错误吗?

Ern*_*toC 7

如果 Redis 实例配置了AUTH字符串和/或TLS 加密,则在连接到它时需要传递这些凭据。

使用您的命令连接到我的加密实例时,我收到了相同的错误。据我测试,这可以通过两种方式完成(从与 Redis 相同的 VPC 中的 GCE 实例):

1.使用 redis-cli,您可以使用以下命令进行身份验证(有关命令中使用的标志的信息,请参阅此处):

redis-cli -h <ip_addres> -p <port> -a <auth_string> --tls --cacert <path/to/certificate_file.pem>
Run Code Online (Sandbox Code Playgroud)

注意:证书文件需要安装您的虚拟机上。

2. GCP Memorystore文档建议使用 telnet 和 Stunnel 连接到安全且加密的实例。

文档中未包含的内容是,telnet localhost 6378在步骤 4 中运行后,您需要在 telnet控制台中传递 AUTH 字符串:

AUTH <auth_string>
+OK
PING
+PONG
Run Code Online (Sandbox Code Playgroud)

之后,您可以在步骤 5 中 PING 实例,跳过发送 AUTH 字符串将返回此错误:-NOAUTH Authentication required。除此之外,您应该按照记录的其余步骤进行操作。

  • 如果您可以提供 java、nodejs 或 python 的代码片段,以便从启用了 TLS 的 us-central1-f 连接到我的 GCP Memorystore Redis 实例,那就太好了。 (2认同)