您可以使用直接 VPC 出站流量从 Cloud Run 连接到 Redis 实例。
设置
如果您已安装 Google Cloud CLI 且已创建 Redis 实例,则可以跳过这些步骤。
安装 gcloud CLI 并初始化:
gcloud init按照快速入门指南创建一个 Redis 实例。记下该 Redis 实例的地区、IP 地址和端口。
准备 VPC 网络出站流量以进行配置
要连接到 Redis 实例,您的 Cloud Run 服务必须有权访问 Redis 实例的已获授权的 VPC 网络。
如需查找此网络的名称,请运行以下命令:
gcloud redis instances describe INSTANCE_ID --region REGION --format "value(authorizedNetwork)"
记下网络名称。
示例应用
此示例 HTTP 服务器应用通过 Cloud Run 服务建立与 Redis 实例之间的连接。
克隆您所选编程语言的代码库,并前往包含示例代码的文件夹:
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples
cd golang-samples/memorystore/redis
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
cd java-docs-samples/memorystore/redis
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples
cd nodejs-docs-samples/memorystore/redis
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
cd python-docs-samples/memorystore/redis
每次访问 / 端点时,此示例应用都会增加一个 Redis 计数器。
Go
此应用使用 github.com/gomodule/redigo/redis 客户端。通过运行以下命令进行安装:
go get github.com/gomodule/redigo/redis@latest
应用示例:
Java
此应用基于 Jetty 3.1 servlet。
它使用 Jedis 库:
AppServletContextListener 类用于创建长效 Redis 连接池:
VisitCounterServlet 类是一个网络 Servlet,用于增加 Redis 计数器。
Node.js
此应用使用 redis 模块。以下是示例 package.json 文件:
示例应用代码:
Python
此应用使用 Flask 进行网络服务,并使用 redis-py 软件包与 Redis 实例进行通信。
示例应用代码:
将应用部署到 Cloud Run
如需部署应用,请执行以下操作:
将
Dockerfile复制到源目录中:cp cloud_run_deployment/Dockerfile .使用 Cloud Build 构建容器映像,方法是运行以下命令:
gcloud artifacts repositories create --location REPO_REGION --repository-format=docker REPO_ID gcloud builds submit --pack image=REPO_REGION-docker.pkg.dev/PROJECT_ID/REPO_ID/visit-counter:v1
运行以下命令,将容器部署到 Cloud Run:
gcloud run deploy \ --image REPO_REGION-docker.pkg.dev/PROJECT_ID/REPO_ID/visit-counter:v1 \ --allow-unauthenticated \ --region REGION \ --network NETWORK \ --subnet SUBNET \ --set-env-vars REDISHOST=REDIS_IP,REDISPORT=REDIS_PORT
其中:
部署成功完成后,该命令行会显示 Cloud Run 服务的网址。在网络浏览器中(或使用 curl 等工具)访问此网址,就会看到每次访问服务时 Redis 实例上的计数都会增加。