连接到 Memorystore for Redis Cluster 实例

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

客户支持

Memorystore for Redis Cluster 不提供自己的客户端库,而是支持符合 Redis 协议的现有第三方客户端库。如需详细了解 Redis 支持的客户端库,请参阅支持的连接客户端。

Redis-py 客户端最佳实践

如需使用 redis-py Python 客户端连接到 Memorystore for Redis Cluster 实例,您必须在声明 Redis Cluster 时添加 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 for Redis Cluster 使用的端口。

对于集群的所有 Private Service Connect 端点,您必须允许 TCP 端口 6379 以及 TCP 端口 11000 到 13047。如需了解详情,请参阅问题排查。

跨区域访问

您可以从位于与 Memorystore 实例不同区域的客户端访问 Memorystore for Redis Cluster 实例。

查看集群的发现端点

每个集群都有一个发现端点,您的客户端会连接到该端点。此端点是 IP 地址和端口号的组合。

您可以使用 Google Cloud 控制台或 gcloud CLI 查看 Memorystore for Redis Cluster 中集群的发现端点。

控制台

  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 Cluster 实例的授权网络的 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_ADDRESS 和 PORT_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. 检查您为集群使用的证书授权机构 (CA) 模式。

  3. 查看集群的发现端点,并记下端点的 IP 地址和端口号。

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

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

    替换以下内容:

    • DISCOVERY_ENDPOINT_ADDRESS:您在上一步中记下的发现端点的 IP 地址
    • PORT_NUMBER:您在上一步中记下的端口号

    如需启用 redis-cli 集群支持模式,请使用 -c 开关。如果您未提供此开关,那么当您尝试访问与您所连接的分片不同的分片中的键时,集群会返回 MOVED 错误。不过,如果您使用该开关,客户端会自动重新连接到错误响应中提供的地址。如需了解详情,请参阅 Redis 可伸缩性:集群、分片和哈希槽。

    如果您在集群上启用了 Identity and Access Management (IAM) 身份验证或基于令牌的基本身份验证,则必须在提供传输层安全协议 (TLS) 标志的同时提供身份验证凭证。例如:

    redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c --tls --cacert /tmp/server_ca.pem --user USERNAME -a TOKEN
    

    替换以下内容:

    • USERNAME:集群的用户名
    • TOKEN:身份验证令牌

    如需详细了解如何生成或管理身份验证凭据,请参阅管理 IAM 身份验证和使用基于令牌的基本身份验证来保护对集群的访问。

  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:您在上一步中记下的节点的端口号

    如果您的集群使用 IAM 或基于令牌的基本身份验证,请确保您包含 --user 和 -a 标志,就像在发现端点步骤中所做的那样。

  7. 连接到节点后,输入一些 Redis 命令:

    请输入:

    PING
    

    结果:

    PONG