本页面介绍了如何使用 Telnet 和 redis-cli
连接到 Redis 实例。此外,本页面还介绍了在使用读取副本、AUTH 和传输加密等功能时如何建立连接的说明。最后,本页面提供有关从 Google Kubernetes Engine 环境进行连接的说明。
如需查看 Memorystore for Redis 支持的 Google Cloud 环境列表,请参阅支持的环境。Memorystore 支持的一些无服务器环境需要无服务器 VPC 访问通道连接器。如需了解详情,请参阅无服务器 VPC 访问通道连接器要求。
使用 Telnet 从 Compute Engine 虚拟机连接到 Redis 实例
您可以从任何具有支持的 RFC 1918 IP 地址且使用 Redis 实例的授权网络的 Compute Engine 虚拟机连接到 Redis 实例。
如果您还没有与 Redis 实例使用同一授权网络的 Compute Engine 虚拟机,请创建一个虚拟机并按照 Linux 虚拟机使用快速入门中的说明连接到该虚拟机。
使用
apt-get
安装telnet
:sudo apt-get install telnet
从该终端通过 telnet 连接到 Redis 实例的 IP 地址,并将 variables 替换为适当的值。
telnet instance-ip-address 6379
如果成功,该命令将返回以下结果:
Trying instance-ip-address… Connected to instance-ip-address
在 telnet 会话中,输入一些 Redis 命令:
输入:
PING
结果:
PONG
输入
SET HELLO WORLD
结果:
+OK
请输入:
GET HELLO
结果:
$5 WORLD
使用 redis-cli
从 Compute Engine 虚拟机连接到 Redis 实例
您可以从任何具有支持的 RFC 1918 IP 地址且使用 Redis 实例的授权网络的 Compute Engine 虚拟机连接到 Redis 实例。
如果您还没有使用 Redis 实例的授权网络的 Compute Engine 虚拟机,请创建一个虚拟机并按照 Linux 虚拟机使用快速入门中的说明连接到该虚拟机。
从 Compute Engine SSH 终端运行以下命令,以在 Compute Engine 虚拟机上安装
redis-cli
:sudo apt-get install redis-tools
在 Compute Engine 终端中运行以下命令,将 variables 替换为适当的值。
redis-cli -h redis-instance-ip-address
您现在已使用
redis-cli
连接到 Redis 实例。完成与 Redis 实例的连接测试后,您应该考虑删除用于连接到 Redis 实例的 Compute Engine 虚拟机。这样做有助于避免系统向您的 Cloud Billing 帐号收取费用。
连接到使用 AUTH 的 Redis 实例
本部分介绍如何连接到启用了 AUTH 功能的 Redis 实例。
如果您还没有与 Redis 实例使用同一授权网络的 Compute Engine 虚拟机,请创建一个虚拟机并按照 Linux 虚拟机使用快速入门中的说明连接到该虚拟机。
从 Compute Engine SSH 终端运行以下命令,以在 Compute Engine 虚拟机上安装
redis-cli
:sudo apt-get install redis-tools
获取实例的 AUTH 字符串
运行以下命令以使用
redis-cli
进行身份验证并连接到您的实例,将 variables 替换为适当的值:redis-cli -h instance-ip-address -a auth-string
或:
redis-cli -h instance-ip-address AUTH auth-string
运行 Redis
SET
和GET
命令以验证是否与实例建立了经过身份验证的连接。完成与 Redis 实例的连接测试后,您应该考虑删除用于连接到 Redis 实例的 Compute Engine 虚拟机。这样做有助于避免系统向您的 Cloud Billing 帐号收取费用。
使用读取端点连接到 Redis 实例
如果实例已启用读取副本,您可以按照以下说明连接到读取端点:
如果您还没有与 Redis 实例使用同一授权网络的 Compute Engine 虚拟机,请创建一个虚拟机并按照 Linux 虚拟机使用快速入门中的说明连接到该虚拟机。
使用
apt-get
安装telnet
:sudo apt-get install telnet
通过查看实例的读取副本信息来查找实例的读取端点的 IP 地址。
在终端窗口中,使用 telnet 命令建立与 Redis 实例读取端点 IP 地址的连接,并将 variables 替换为适当的值。
telnet read-endpoint-ip 6379
如果成功,该命令将返回以下结果:
Trying read-endpoint-ip… Connected to read-endpoint-ip
在 telnet 会话中,输入一些 Redis 命令:
输入:
PING
结果:
PONG
使用安全通道和 telnet 安全地连接到 Redis 实例
本部分举例说明如何使用安全通道连接到启用了传输加密的 Redis 实例。
如果您还没有启用了传输加密的 Redis 实例,请按照创建使用传输加密的 Redis 实例创建一个。
如果您还没有与上一步的 Redis 实例使用同一授权网络的 Compute Engine 虚拟机,请创建一个虚拟机并按照 Linux 虚拟机使用快速入门中的说明连接到该虚拟机。
通过运行以下命令来安装本指南所必须的工具:
sudo apt-get install stunnel4
sudo apt-get install telnet
配置 Compute Engine 虚拟机,以便与安全通道配合使用:
运行以下命令,新建一个文件来存放您的证书授权机构 (CA):
sudo vim /tmp/server_ca.pem
在用于管理 Google Cloud 资源的标准终端(而非 Compute Engine 终端)中,运行以下命令来查看 Redis 实例的证书授权机构:
gcloud redis instances describe instance-id --region=region
最多可有三个 CA。
复制所有可见的证书授权机构(包括
-----BEGIN CERTIFICATE-----
行和-----END CERTIFICATE-----
行),然后将其粘贴并保存到您刚刚创建的server_ca.pem
文件中。运行以下命令来新建一个文件,并在其中存放安全通道配置信息:
sudo vim /etc/stunnel/redis-client.conf
将以下文字粘贴到文件中,并将 redis-instance-ip 替换为 Redis 实例的 IP 地址:
output=/tmp/stunnel.log CAfile=/tmp/server_ca.pem client=yes pid=/var/run/stunnel.pid verifyChain=yes sslVersion=TLSv1.2 [redis] accept=127.0.0.1:6378 connect=redis-instance-ip:6378
运行以下命令启动 Stunnel:
sudo stunnel /etc/stunnel/redis-client.conf
验证 Stunnel 是否正在运行:
ps aux | grep stunnel
运行以下命令来重启安全通道:
sudo systemctl restart stunnel4
如需使用 Telnet 连接到 Redis 实例,请运行以下命令:
telnet localhost 6378
在 Telnet 会话中,对 Redis 实例执行 ping 操作:
请输入:
PING
结果:
PONG
使用端口转发从本地机器进行连接
在开发过程中,从本地机器连接到 Redis 实例会很有帮助。为此,您必须创建一个 Compute Engine 实例以用于将端口转发到 Redis 实例。
通过运行以下命令来创建 Compute Engine 实例:
gcloud compute instances create NAME --machine-type=f1-micro --zone=ZONE
其中:
- NAME 是您为 Compute Engine 虚拟机指定的名称。
- ZONE 是您要预配虚拟机的可用区。
此命令可使用
f1-micro
机器类型创建 Compute Engine 虚拟机,以提高成本效益。如果您愿意,还可以选择其他机器类型。在本地机器上打开一个新终端。
如需创建通过 Compute Engine 虚拟机转发流量的 SSH 隧道,请运行以下命令:
gcloud compute ssh COMPUTE_VM_NAME --zone=ZONE -- -N -L 6379:REDIS_INSTANCE_IP_ADDRESS:6379
其中:
- COMPUTE_VM_NAME 是 Compute Engine 虚拟机的名称。
- ZONE 是 Compute Engine 虚拟机所在的地区。
- REDIS_INSTANCE_IP_ADDRESS 是 Redis 实例的 IP 地址。
如要测试连接,请打开一个新的终端窗口并运行以下命令:
redis-cli ping
如果运行正常,则结果应返回:
PONG
您现已连接到 Redis 实例,可以使用此打开的 SSH 隧道将命令发送到 Redis 实例。如果您尚未安装
redis-cli
,请安装,以便运行此命令。只要您保持带有 SSH 隧道连接的终端窗口打开并运行,SSH 隧道仍保持打开状态。
从 Google Kubernetes Engine 集群连接到 Redis 实例
您可以从与 Redis 实例使用相同授权网络的 Google Kubernetes Engine 集群连接到该 Redis 实例。
从运行 bash shell 的 pod 进行连接
- 转到 Google Cloud Console 中的 GKE 页面。
GKE - 点击要从其建立连接的 GKE 集群。如果您还没有集群,请创建一个启用 IP 别名的集群。如需了解如何创建已启用 IP 别名的集群,请参阅创建 VPC 原生集群。
- 点击集群名称右侧的连接按钮,然后点击所显示的窗口中的在 Cloud Shell 中运行按钮。
- 通过运行以下命令来配置
kubectl
命令行访问权限:gcloud container clusters get-credentials CLUSTER_NAME --zone=CLUSTER_ZONE --project=PROJECT_ID
CLUSTER_NAME
是集群的名称。CLUSTER_ZONE
是集群所在的地区。它还必须是 Redis 实例所在的地区。PROJECT_ID
是集群和 Redis 实例所在的项目。
kubeconfig generated for CLUSTER_NAME
- 如果您的集群是版本 1.8 或更高版本且启用了 IP 别名,请跳过此步骤。如果您的集群是版本 1.7 或更低版本,或者集群为版本 1.8 或更高版本但未启用 IP 别名,请在尝试连接到实例之前,按照以下解决方法步骤操作:创建 VPC 原生集群。 如需详细了解 IP 别名(包括如何创建启用了此设置的集群),请参阅
- 使用以下命令连接到 bash shell:
kubectl run -i --tty busybox --image=busybox -- sh
- 使用主机地址和端口号建立与 Redis 实例的 telnet 连接:
telnet HOST-IP PORT
- 输入基本 Redis 命令来验证连接:
PING +PONG
- 要关闭 telnet 连接,请按 Control+C(在 Mac 上按 Command+C)。要退出 pod 中的 bash shell,请输入 return。如果您已完成操作,不再需要连接到 Redis,请从
/k8s-custom-iptables/
目录运行以下命令:./uninstall.sh
从 Google Kubernetes Engine pod 连接到 Redis 实例
开始之前,您需要一个 GKE 集群。如果您还没有集群,请创建一个启用 IP 别名的集群。如需了解如何创建已启用 IP 别名的集群,请参阅创建 VPC 原生集群。
- 在 Console 的右上角,点击激活 Cloud Shell 按钮。
- 通过运行以下命令来配置
kubectl
命令行访问权限:gcloud container clusters get-credentials CLUSTER_NAME --zone CLUSTER_ZONE --project PROJECT_ID
CLUSTER_NAME
是集群的名称。CLUSTER_ZONE
是集群所在的地区。它还必须是 Redis 实例所在的地区。PROJECT_ID
是集群和 Redis 实例所在的项目。
kubeconfig generated for CLUSTER_NAME
- 如果您的集群是版本 1.8 或更高版本且启用了 IP 别名,请跳过此步骤。如果您的集群是版本 1.7 或更低版本,或者集群为版本 1.8 或更高版本但未启用 IP 别名,请在尝试连接到实例之前,按照以下解决方法步骤操作:创建 VPC 原生集群。 如需详细了解 IP 别名(包括如何创建启用了此设置的集群),请参阅
- 使用以下命令启动运行
redis-cli
的 Redis pod:kubectl run -i --tty redisbox --image=gcr.io/google_containers/redis:v1 -- sh
- 运行
redis-cli
命令,将HOST-IP
替换为 Redis 实例的主机 IP 地址:redis-cli -h HOST-IP info
- (可选)运行 Redis benchmark 命令,再次将
HOST-IP
替换为 Redis 实例的主机 IP 地址:redis-benchmark -c 100 -n 100000 -d 1024 -r 100000 -t PING,SET,GET,INCR,LPUSH,RPUSH,LPOP,RPOP,SADD,SPOP,MSET -h HOST-IP -q
- 要退出 Redis pod,请输入
return
。如果您已完成操作,不再需要连接到 Redis,请从/k8s-custom-iptables/
目录运行以下命令:./uninstall.sh
后续步骤
使用在以下位置运行的示例应用连接到 Redis 实例: