开始之前,请确保您的应用不会超出 Memorystore for Redis 配额。
何时使用内存缓存
会话数据、用户偏好设置以及网页查询返回的其他数据都非常适合进行缓存。通常,如果频繁运行的查询所返回的结果集不需要立即显示在您的应用中,便可以缓存结果。如此,后续请求可以检查缓存,只有当结果缺失或过期时才会查询数据库。
如果您将某个值仅存储在 Memorystore 中,而没有将其备份到永久性存储空间,请确保在该值过期及从缓存中移除时,您的应用仍可正常运作。例如,如果用户会话数据的突然缺失会导致会话出现故障,则应考虑除了在 Memorystore 中存储该数据之外,还应将其存储在数据库中。
了解 Memorystore 权限
与 Google Cloud 服务之间进行的每一次交互操作都需要经过授权。例如,如需与 Memorystore 托管的 Redis 数据库进行交互,您的应用需要提供有权访问 Memorystore 的账号的相应凭据。
默认情况下,您的应用会提供 App Engine 默认服务账号的凭据,该账号有权访问与您应用同属一个项目中的数据库。
如果满足以下任何条件,则您需要使用明确提供凭据的备用身份验证技术:
您的应用和 Memorystore 数据库位于不同的 Google Cloud 项目中。
您已更改分配给默认 App Engine 服务账号的角色。
如需了解备用身份验证方法,请参阅为服务器到服务器的生产应用设置身份验证。
使用 Memorystore 概览
如需在您的应用中使用 Memorystore,请执行以下操作:
设置 Memorystore for Redis,此操作需要您在 Memorystore 上创建 Redis 实例并创建无服务器 VPC 访问通道,以供您的应用与 Redis 实例通信。 创建这两个独立实体的顺序并不严格,可以按任意顺序设置。本指南中的说明首先显示如何设置无服务器 VPC 访问通道。
安装适用于 Redis 的客户端库并使用 Redis 命令缓存数据。
Memorystore for Redis 与适用于 Redis 的任何客户端库都兼容。本指南介绍如何使用 redigo 客户端库从您的应用发送 Redis 命令。
设置 Memorystore for Redis
如需设置 Memorystore for Redis,请执行以下操作:
将 App Engine 连接到 VPC 网络。您的应用只能通过 VPC 连接器与 Memorystore 通信。
请务必按照将应用配置为使用连接器中的说明,将 VPC 连接信息添加到
app.yaml
文件中。记下您创建的 Redis 实例的 IP 地址和端口号。您在自己的代码中创建 Redis 客户端时,将会用到这些信息。
在 Memorystore 中创建 Redis 实例。
当系统提示您为 Redis 实例选择地区时,请选择您的 App Engine 应用所在的地区。
安装依赖项
如需使应用在 App Engine 中运行时能够使用 redigo 客户端库,请将该客户端库添加到应用的依赖项中。例如,如果您使用go.mod
文件声明依赖项,请将下面一行代码添加到 go.mod
文件中:
module github.com/GoogleCloudPlatform/golang-samples/tree/master/memorystore/redis
详细了解如何为 Go 应用指定依赖项。
创建 Redis 客户端
如需与 Redis 数据库进行交互,您的代码需要创建 Redis 客户端才能管理与 Redis 数据库的连接。以下部分介绍如何使用 redigo 客户端库创建 Redis 客户端。
指定环境变量
redigo 客户端库使用两个环境变量为您的 Redis 数据库组建网址:
- 用于标识您在 Memorystore 中创建的 Redis 数据库的 IP 地址的变量。
- 用于标识您在 Memorystore 中创建的 Redis 数据库的端口号的变量。
我们建议您在应用的 app.yaml
文件中定义这些变量,而不是直接在您的代码中定义这些变量。这样可以更轻松地在不同的环境(例如本地环境和 App Engine)中运行您的应用。
app.yaml
文件中:
env_variables:
REDISHOST: '10.112.12.112'
REDISPORT: '6379'
导入 redigo 并创建客户端
定义REDISHOST
和 REDISPORT
环境变量后,请使用下面若干行代码导入 redigo 库,接着创建连接池,然后从池中检索 Redis 客户端:
使用 Redis 命令在缓存中存储和检索数据
虽然 Memorystore Redis 数据库支持大多数 Redis 命令,但您只需使用几个命令即可在缓存中存储和检索数据。下表建议了一些可用于缓存数据的 Redis 命令。如需了解如何从您的应用调用这些命令,请参阅客户端库的文档。
任务 | Redis 命令 |
---|---|
在数据缓存中创建一个条目, 并为该条目设置到期时间 |
SETNX MSETNX |
从缓存中检索数据 | GET MGET |
替换现有的缓存值 | SET MSET |
递增或递减缓存数值 | INCR INCRBY DECR DECRBY |
从缓存中删除条目 | DEL UNLINK |
支持与缓存进行并发交互 | 请参阅有关 Redis 事务的详细信息。 |
测试更新
当您在本地测试应用时,请考虑运行 Redis 的本地实例以避免与生产数据交互(Memorystore 不提供模拟器)。如需在本地安装并运行 Redis,请按照 Redis 文档中的说明进行操作。请注意,目前无法在 Windows 上本地运行 Redis。
部署应用
一旦您的应用能够在本地开发服务器上无错误地正常运行,请执行以下操作:
如果应用无错误地正常运行,请使用流量拆分功能为更新后的应用缓慢增加流量。请先仔细监控应用是否存在任何数据库问题,然后再将更多流量路由到更新后的应用。