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

GCP Memorystore Redis: Protocol error, got "\x15" as reply type byte

几天来我一直在研究这个 Redis 错误...

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

10.xxx.xxx.xxx:6378

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

us-central1-f

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

Protocol error, got "\x15" as reply type byte

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

如果 Redis 实例配置有 AUTH string and/or TLS encryption,您需要在连接到它时传递这些凭据。

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

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

redis-cli -h <ip_addres> -p <port> -a <auth_string> --tls --cacert <path/to/certificate_file.pem>

注意:证书文件需要 installed 到您的 VM。

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

文档中未包含的内容是,在第 4 步 运行 telnet localhost 6378 之后,您需要传递 AUTH 字符串 in the telnet console:

AUTH <auth_string>
+OK
PING
+PONG

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