连接到 Memorystore for Redis Cluster 实例

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

客户支持

Memorystore for Redis Cluster 不提供自己的客户端库,但支持支持 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 Cluster 实例。

查看集群的发现端点

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

控制台

  1. 前往 Google Cloud 控制台中的 Memorystore for Redis Cluster 页面。

    Memorystore for Redis Cluster

  2. 点击您的集群 ID。

  3. 连接到此实例部分,记下发现端点旁边的 IP 地址和端口号。这两个值共同构成了集群的发现端点。

gcloud

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

输出应类似如下所示:

authorizationMode: AUTH_MODE_DISABLED
createTime: '2023-08-04T17:49:07.988918793Z'
discoveryEndpoints:
- address: 10.142.0.13
  port: 6379
  pscConfig:
  - network: projects/my-project-364018/global/networks/default
name: projects/my-project-364018/locations/us-east1/clusters/my-cluster-1
pscConnections:
- address: 10.142.0.13
  forwardingRule: https://www.googleapis.com/compute/v1/projects/my-project-364018/regions/us-east1/forwardingRules/sca-auto-fr-5bc46f69-ec80-4c5a-8971-ce267a4d8ddd
  network: projects/my-project-364018/global/networks/default
  projectId: my-project-364018
  pscConnectionId: '25734306048376845'
- address: 10.142.0.10
  forwardingRule: https://www.googleapis.com/compute/v1/projects/my-project-364018/regions/us-east1/.
  forwardingRules/sca-auto-fr-817b64c5-85ac-48d0-82e3-c6fa99b4e67d
  network: projects/my-project-364018/global/networks/default
  projectId: my-project-364018
  pscConnectionId: '25734306048376842'
replicaCount: 0
shardCount: 3
sizeGb: 39
state: ACTIVE
tier: PERFORMANCE
transitEncryptionMode: TRANSIT_ENCRYPTION_MODE_DISABLED
uid: cddda5de-d91f-449b-8755-3a665430271a

记下 discovery_endpoints: 部分中列出的端点地址和端口号。这两个值共同构成了集群的发现端点。

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

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

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

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

  2. 按照在 Linux 上安装 Redis 中的说明,在 Compute Engine 虚拟机上安装 redis-cli 版本 6.0 或更高版本。

  3. 查看集群的发现端点并记下该端点。

  4. 运行以下命令,连接到实例的发现端点:

    redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
    

    其中:

    • DISCOVERY_ENDPOINT_ADDRESSPORT_NUMBER 是您在上一步中记下的值。
  5. 运行 CLUSTER SHARDS 命令可查看集群拓扑。记下其中一个节点的 IP 地址和端口号。

  6. 运行以下命令,连接到所需节点:

    redis-cli -h NODE_IP_ADDRESS -p NODE_PORT -c
    

    替换以下内容:

    • NODE_IP_ADDRESS 是您在上一步中找到的节点的 IP 地址。
    • NODE_PORT 是您在上一步中找到的节点的端口号。
  7. 连接到节点后,输入一些 Redis 命令:

    请输入:

    PING
    

    结果:

    PONG
    

    输入

    SET HELLO WORLD
    

    结果:

    OK
    

    请输入:

    GET HELLO
    

    结果:

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

连接到启用了传输加密的实例

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

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

    1. 按照在 Linux 上安装 Redis 中的说明,在 Compute Engine 虚拟机上安装 redis-cli 版本 6.0 或更高版本。
  2. 按照在客户端上安装证书授权机构中的说明,在 Linux 虚拟机上安装实例的证书授权机构。

  3. 查看集群的发现端点并记下该端点。

  4. 运行以下命令,连接到实例的发现端点:

    redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c --tls  --cacert /tmp/server_ca.pem
    

    其中:

    • DISCOVERY_ENDPOINT_ADDRESSPORT_NUMBER 是您在上一步中记下的值。
  5. 运行 CLUSTER SHARDS 命令可查看集群拓扑。记下其中一个节点的 IP 地址和端口号。

  6. 运行以下命令,连接到所需节点:

    redis-cli -h NODE_IP_ADDRESS -p NODE_PORT -c --tls  --cacert /tmp/server_ca.pem
    

    替换以下内容:

    • NODE_IP_ADDRESS 是您在上一步中找到的节点的 IP 地址。
    • NODE_PORT 是您在上一步中找到的节点的端口号。
  7. 连接到节点后,输入一些 Redis 命令:

    请输入:

    PING
    

    结果:

    PONG