连接到 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 虚拟机,请创建一个虚拟机并按照在特定子网中创建虚拟机实例中的说明连接到该虚拟机。

  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 COMPUTE_VM_NAME --machine-type=f1-micro --zone=ZONE
    

    其中:

    • COMPUTE_VM_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 控制台中的 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 实例: