连接到 Memorystore for Redis 集群实例

本页面介绍了如何连接到 Memorystore for Redis 集群实例。

客户支持

Memorystore for Redis 集群不提供自己的客户端库,但支持支持 Redis 协议的现有第三方客户端库。您可以在 Redis 客户端页面上找到客户端示例列表。

Redis-py 客户端最佳实践

如需使用 redis-py Python 客户端连接到 Memorystore for Redis 集群实例,必须在声明 Redis 集群时添加 skip_full_coverage_check=True

from rediscluster import RedisCluster
endpoints = [{"host": "IPADDRESS", "port": "6379"}]

rdb = RedisCluster(
    startup_nodes=endpoints,
    skip_full_coverage_check=True, # Required for Memorystore
    decode_responses = True)

print(rdb.set('PYTHON', 'CLUSTER'))
print(rdb.get('PYTHON'))
print(rdb.unlink('PYTHON'))

跨区域访问

您可以从与 Memorystore 实例位置不同的区域中的客户端访问 Memorystore for Redis 集群实例。

查看集群的发现端点

如需查看 Memorystore 集群的发现端点,请按照以下说明操作:

控制台

  1. 转到 Google Cloud 控制台中的 Memorystore for Redis 集群页面。

    Memorystore for Redis 集群

  2. 点击您的集群 ID。

  3. 连接到此实例部分中,记下内部 IP 地址连接端口。这两个值一起使用是集群的发现端点。

gcloud

如需查看集群的发现端点,请按照查看实例详情部分中的说明运行 describe gcloud CLI。

输出应类似如下所示:

createTime: '2023-05-30T19:47:37.850985390Z'
discoveryEndpoints:
- address: 10.142.0.10
  port: 6379
  pscConfig:
     network: projects/my-project-364018/global/networks/default
     projectId: my-project-364018
name: projects/my-project-364018/locations/us-east1/clusters/my-cluster-1
replicaCount: 0
shardCount: 3
sizeGb: 39
state: ACTIVE
transitEncryptionMode: TRANSIT_ENCRYPTION_MODE_DISABLED
uid: 87b47146-217d-472e-96e5-13962c0e8706

记下 discovery_endpoints: 部分中列出的端点地址和端口号。这两个值一起使用是集群的发现端点。

使用 redis-cli 从 Compute Engine 虚拟机进行连接

您可以从任何使用 Memorystore 实例的授权网络的 Compute Engine 虚拟机连接到 Memorystore for Redis 集群实例。

如需连接到实例,请执行以下操作:

  1. 如果您还没有将已获授权的网络用于 Memorystore for Redis 集群实例的 Compute Engine 虚拟机,请创建一个虚拟机并按照快速入门:创建 Linux 虚拟机连接到该虚拟机。

  2. 在 Compute Engine 虚拟机上安装 redis-cli。如果您创建了基于 Linux Debian 的虚拟机,则可以从 Compute Engine SSH 终端运行以下命令:

    sudo apt-get update
    sudo apt-get install redis
    
  3. 查看集群的发现端点并记下该端点。

  4. 在 Memorystore for Redis 集群终端中运行以下命令,将变量替换为适当的值。

    redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
    

    其中:

    • DISCOVERY_ENDPOINT_ADDRESSPORT_NUMBER 是您在上一步中记录的值。
  5. 连接后,输入一些 Redis 命令:

    请输入:

    PING
    

    结果:

    PONG
    

    输入

    SET HELLO WORLD
    

    结果:

    OK
    

    请输入:

    GET HELLO
    

    结果:

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

使用 Stunnel 和 telnet 安全地连接到 Memorystore 集群

本部分举例说明了如何使用 Stunnel 连接到启用了传输加密的 Memorystore for Redis 集群实例。

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

  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 alpha redis clusters get-cluster-certificate-authority  --cluster-id=CLUSTER_ID
      
    3. 复制所有可见的证书授权机构(包括 -----BEGIN CERTIFICATE----- 行和 -----END CERTIFICATE----- 行),然后将其粘贴并保存到您刚刚创建的 server_ca.pem 文件中。

    4. 创建一个新文件,用于存放 Stunnel 配置信息:

      sudo vim /etc/stunnel/redis-client.conf
      
    5. 将以下文本粘贴到该文件中,注意将 DISCOVERY_ENDPOINT_ADDRESS 替换为您的集群的专用服务连接端点 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:6379
      connect=DISCOVERY_ENDPOINT_ADDRESS:PORT_NUMBER
      

      启动 Slang:

      sudo stunnel /etc/stunnel/redis-client.conf
      

      验证 S 隧道是否正在运行:

      ps aux | grep stunnel
      
    6. 重启 Stunnel:

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

    redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
    
  5. 连接后,输入一些 Redis 命令:

    请输入:

    PING
    

    结果:

    PONG