连接到 Redis 实例

本页面介绍了如何使用 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 实例。

  1. 如果您还没有与 Redis 实例使用同一授权网络的 Compute Engine 虚拟机,请创建一个虚拟机并按照 Linux 虚拟机使用快速入门中的说明连接到该虚拟机。

  2. 使用 apt-get 安装 telnet

    sudo apt-get install telnet
    
  3. 从该终端通过 telnet 连接到 Redis 实例的 IP 地址,并将 variables 替换为适当的值。

    telnet instance-ip-address 6379
    

    如果成功,该命令将返回以下结果:

    Trying instance-ip-address…
    Connected to instance-ip-address
    
  4. 在 telnet 会话中,输入一些 Redis 命令:

    输入:

    PING
    

    结果:

    PONG
    

    输入

    SET HELLO WORLD
    

    结果:

    +OK
    

    请输入:

    GET HELLO
    

    结果:

    $5
    WORLD
    

使用 redis-cli 从 Compute Engine 虚拟机连接到 Redis 实例

您可以从任何具有支持的 RFC 1918 IP 地址且使用 Redis 实例的授权网络的 Compute Engine 虚拟机连接到 Redis 实例。

  1. 如果您还没有使用 Redis 实例的授权网络的 Compute Engine 虚拟机,请创建一个虚拟机并按照 Linux 虚拟机使用快速入门中的说明连接到该虚拟机。

  2. 从 Compute Engine SSH 终端运行以下命令,以在 Compute Engine 虚拟机上安装 redis-cli

    sudo apt-get install redis-tools
    
  3. Compute Engine 终端中运行以下命令,将 variables 替换为适当的值。

    redis-cli -h redis-instance-ip-address
    

    您现在已使用 redis-cli 连接到 Redis 实例。

  4. 完成与 Redis 实例的连接测试后,您应该考虑删除用于连接到 Redis 实例的 Compute Engine 虚拟机。这样做有助于避免系统向您的 Cloud Billing 帐号收取费用。

连接到使用 AUTH 的 Redis 实例

本部分介绍如何连接到启用了 AUTH 功能的 Redis 实例。

  1. 如果您还没有与 Redis 实例使用同一授权网络的 Compute Engine 虚拟机,请创建一个虚拟机并按照 Linux 虚拟机使用快速入门中的说明连接到该虚拟机。

  2. 从 Compute Engine SSH 终端运行以下命令,以在 Compute Engine 虚拟机上安装 redis-cli

    sudo apt-get install redis-tools
    
  3. 获取实例的 AUTH 字符串

  4. 运行以下命令以使用 redis-cli 进行身份验证并连接到您的实例,将 variables 替换为适当的值:

    redis-cli -h instance-ip-address -a auth-string
    

    或:

    redis-cli -h instance-ip-address
    AUTH auth-string
    
  5. 运行 Redis SETGET 命令以验证是否与实例建立了经过身份验证的连接。

  6. 完成与 Redis 实例的连接测试后,您应该考虑删除用于连接到 Redis 实例的 Compute Engine 虚拟机。这样做有助于避免系统向您的 Cloud Billing 帐号收取费用。

使用读取端点连接到 Redis 实例

如果实例已启用读取副本,您可以按照以下说明连接到读取端点:

  1. 如果您还没有与 Redis 实例使用同一授权网络的 Compute Engine 虚拟机,请创建一个虚拟机并按照 Linux 虚拟机使用快速入门中的说明连接到该虚拟机。

  2. 使用 apt-get 安装 telnet

    sudo apt-get install telnet
    
  3. 通过查看实例的读取副本信息来查找实例的读取端点的 IP 地址。

  4. 在终端窗口中,使用 telnet 命令建立与 Redis 实例读取端点 IP 地址的连接,并将 variables 替换为适当的值。

    telnet read-endpoint-ip 6379
    

    如果成功,该命令将返回以下结果:

    Trying read-endpoint-ip…
    Connected to read-endpoint-ip
    
  5. 在 telnet 会话中,输入一些 Redis 命令:

    输入:

    PING
    

    结果:

    PONG
    

使用安全通道和 telnet 安全地连接到 Redis 实例

本部分举例说明如何使用安全通道连接到启用了传输加密的 Redis 实例。

  1. 如果您还没有启用了传输加密的 Redis 实例,请按照创建使用传输加密的 Redis 实例创建一个。

  2. 如果您还没有与上一步的 Redis 实例使用同一授权网络的 Compute Engine 虚拟机,请创建一个虚拟机并按照 Linux 虚拟机使用快速入门中的说明连接到该虚拟机。

    1. 通过运行以下命令来安装本指南所必须的工具:

      sudo apt-get install stunnel4
      
      sudo apt-get install telnet
      
  3. 配置 Compute Engine 虚拟机,以便与安全通道配合使用:

    1. 运行以下命令,新建一个文件来存放您的证书授权机构 (CA):

      sudo vim /tmp/server_ca.pem
      
    2. 在用于管理 Google Cloud 资源的标准终端(而非 Compute Engine 终端)中,运行以下命令来查看 Redis 实例的证书授权机构:

      gcloud redis instances describe instance-id --region=region
      

      最多可有三个 CA。

    3. 复制所有可见的证书授权机构(包括 -----BEGIN CERTIFICATE----- 行和 -----END CERTIFICATE----- 行),然后将其粘贴并保存到您刚刚创建的 server_ca.pem 文件中。

    4. 运行以下命令来新建一个文件,并在其中存放安全通道配置信息:

      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
      

    5. 运行以下命令来重启安全通道:

      sudo systemctl restart stunnel4
      
  4. 如需使用 Telnet 连接到 Redis 实例,请运行以下命令:

    telnet localhost 6378
    
  5. 在 Telnet 会话中,对 Redis 实例执行 ping 操作:

    请输入:

    PING
    

    结果:

    PONG
    

使用端口转发从本地机器进行连接

在开发过程中,从本地机器连接到 Redis 实例会很有帮助。为此,您必须创建一个 Compute Engine 实例以用于将端口转发到 Redis 实例。

  1. 通过运行以下命令来创建 Compute Engine 实例:

    gcloud compute instances create NAME --machine-type=f1-micro --zone=ZONE
    

    其中:

    • NAME 是您为 Compute Engine 虚拟机指定的名称。
    • ZONE 是您要预配虚拟机的可用区。

    此命令可使用 f1-micro 机器类型创建 Compute Engine 虚拟机,以提高成本效益。如果您愿意,还可以选择其他机器类型。

  2. 在本地机器上打开一个新终端。

  3. 如需创建通过 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 地址。
  4. 如要测试连接,请打开一个新的终端窗口并运行以下命令:

    redis-cli ping
    

    如果运行正常,则结果应返回:

    PONG
    

    您现已连接到 Redis 实例,可以使用此打开的 SSH 隧道将命令发送到 Redis 实例。如果您尚未安装 redis-cli,请安装,以便运行此命令。

  5. 只要您保持带有 SSH 隧道连接的终端窗口打开并运行,SSH 隧道仍保持打开状态。

从 Google Kubernetes Engine 集群连接到 Redis 实例

您可以从与 Redis 实例使用相同授权网络的 Google Kubernetes Engine 集群连接到该 Redis 实例。

从运行 bash shell 的 pod 进行连接

  1. 转到 Google Cloud Console 中的 GKE 页面。
    GKE
  2. 点击要从其建立连接的 GKE 集群。如果您还没有集群,请创建一个启用 IP 别名的集群。如需了解如何创建已启用 IP 别名的集群,请参阅创建 VPC 原生集群
  3. 点击集群名称右侧的连接按钮,然后点击所显示的窗口中的在 Cloud Shell 中运行按钮。
  4. 通过运行以下命令来配置 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
  5. 如果您的集群是版本 1.8 或更高版本启用了 IP 别名,请跳过此步骤。如果您的集群是版本 1.7 或更低版本,或者集群为版本 1.8 或更高版本但未启用 IP 别名,请在尝试连接到实例之前,按照以下解决方法步骤操作: 如需详细了解 IP 别名(包括如何创建启用了此设置的集群),请参阅创建 VPC 原生集群
  6. 使用以下命令连接到 bash shell:
    kubectl run -i --tty busybox --image=busybox -- sh
  7. 使用主机地址和端口号建立与 Redis 实例的 telnet 连接:
    telnet HOST-IP PORT
  8. 输入基本 Redis 命令来验证连接:
    PING
    +PONG
  9. 要关闭 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 原生集群

  1. 在 Console 的右上角,点击激活 Cloud Shell 激活 Cloud Shell 按钮。
  2. 通过运行以下命令来配置 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
  3. 如果您的集群是版本 1.8 或更高版本启用了 IP 别名,请跳过此步骤。如果您的集群是版本 1.7 或更低版本,或者集群为版本 1.8 或更高版本但未启用 IP 别名,请在尝试连接到实例之前,按照以下解决方法步骤操作: 如需详细了解 IP 别名(包括如何创建启用了此设置的集群),请参阅创建 VPC 原生集群
  4. 使用以下命令启动运行 redis-cli 的 Redis pod:
    kubectl run -i --tty redisbox --image=gcr.io/google_containers/redis:v1 -- sh
  5. 运行 redis-cli 命令,将 HOST-IP 替换为 Redis 实例的主机 IP 地址:
    redis-cli -h HOST-IP info
  6. (可选)运行 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
  7. 要退出 Redis pod,请输入 return。如果您已完成操作,不再需要连接到 Redis,请从 /k8s-custom-iptables/ 目录运行以下命令:
    ./uninstall.sh

后续步骤

使用在以下位置运行的示例应用连接到 Redis 实例: