本页面介绍了如何连接到 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 集群的发现端点,请按照以下说明操作:
控制台
转到 Google Cloud 控制台中的 Memorystore for Redis 集群页面。
点击您的集群 ID。
在连接到此实例部分中,记下内部 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 集群实例。
如需连接到实例,请执行以下操作:
如果您还没有将已获授权的网络用于 Memorystore for Redis 集群实例的 Compute Engine 虚拟机,请创建一个虚拟机并按照快速入门:创建 Linux 虚拟机连接到该虚拟机。
在 Compute Engine 虚拟机上安装
redis-cli
。如果您创建了基于 Linux Debian 的虚拟机,则可以从 Compute Engine SSH 终端运行以下命令:sudo apt-get update sudo apt-get install redis
查看集群的发现端点并记下该端点。
在 Memorystore for Redis 集群终端中运行以下命令,将变量替换为适当的值。
redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
其中:
- DISCOVERY_ENDPOINT_ADDRESS 和 PORT_NUMBER 是您在上一步中记录的值。
连接后,输入一些 Redis 命令:
请输入:
PING
结果:
PONG
输入
SET HELLO WORLD
结果:
OK
请输入:
GET HELLO
结果:
"WORLD"
完成与 Redis 实例的连接测试后,应考虑删除用于连接到 Redis 实例的 Compute Engine 虚拟机。这样做有助于避免您的 Cloud Billing 帐号产生费用。
使用 Stunnel 和 telnet 安全地连接到 Memorystore 集群
本部分举例说明了如何使用 Stunnel 连接到启用了传输加密的 Memorystore for Redis 集群实例。
如果您还没有启用了传输加密的 Memorystore 集群,请按照创建启用了传输加密的实例创建一个。
如果您还没有与上一步中的 Redis 实例使用同一授权网络的 Compute Engine 虚拟机,请创建一个虚拟机并按照 Linux 虚拟机使用快速入门中的说明连接到该虚拟机。
安装本指南所需的工具:
sudo apt-get install stunnel4
sudo apt-get install telnet
配置 Compute Engine 虚拟机,以便与安全通道配合使用:
运行以下命令,新建一个文件来存放您的证书授权机构 (CA):
sudo vim /tmp/server_ca.pem
在用于管理 Google Cloud 资源的标准终端(而不是 Compute Engine 终端)中运行以下命令,查看您的 Redis 实例的证书授权机构
gcloud alpha redis clusters get-cluster-certificate-authority --cluster-id=CLUSTER_ID
复制所有可见的证书授权机构(包括
-----BEGIN CERTIFICATE-----
行和-----END CERTIFICATE-----
行),然后将其粘贴并保存到您刚刚创建的server_ca.pem
文件中。创建一个新文件,用于存放 Stunnel 配置信息:
sudo vim /etc/stunnel/redis-client.conf
将以下文本粘贴到该文件中,注意将 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
重启 Stunnel:
sudo systemctl restart stunnel4
如需使用 Redis-CLI 连接到 Redis 实例,请运行以下命令:
redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
连接后,输入一些 Redis 命令:
请输入:
PING
结果:
PONG