本页面提供了如何以最优方式使用 Memorystore for Redis 的指导。本页面还指出了需要避免的潜在问题。
如需问题排查方案的列表,请参阅问题排查。
RDB 导出
导出 RDB 备份时,请遵循以下指南:
- 在写入速率较低的时候导出。
- 如果在写入速率较同的时候导出,请将
maxmemory
配置暂时降低到 50% 的实例容量,以便提供足够的开销以保证操作成功。
资源密集型操作
对于标准层级 Redis 实例,以下操作会在操作期间使用额外的内存:
由于复制功能,版本升级、扩缩和手动故障切换会占用额外的内存(对于标准层级实例而言)。这些操作遵循标准层级实例升级行为中所述的复制过程。
导入和导出操作需要额外的内存,因为存在与这些操作相关的分支 Redis 进程和写入时复制数据管理。
为了减少资源密集型操作的缺点,您应该:
- 在操作期间,将最大内存配置降低到 80% 的实例容量。这样做可以提供足够的开销以实现成功的操作。
- 监控系统内存使用率指标,确保在运行其中某项操作之前该指标低于 80%。
- 在实例流量较低的时候(例如晚上、周末等)运行这些操作。
- 在运行这些操作之前,先设置具有指数退避算法的重试逻辑。
需要连接重试的操作和情景
以下操作和情景会中断您的网络与 Redis 实例之间的网络连接:
这些操作会修改您的实例,需要临时中断连接。您需要在运行这些操作前先设置具有指数退避算法的重试逻辑,以便您的应用能够自动重新连接并继续正常运行。
例行维护
Memorystore for Redis 实例会定期进行维护。如需了解详情,请参阅 Memorystore for Redis 维护政策。
实施以下最佳做法,为日常维护做好准备:
- 设置维护窗口以安排何时进行维护更新。
- 为低实例流量和足够的内存开销安排维护时段。如需了解详情,请参阅维护更新的影响。
- 开启维护窗口通知,提醒您即将进行维护。
- 设置具有指数退避算法的重试逻辑。
- 对于标准层级实例,您可以使用手动故障切换模拟维护事件,以了解维护导致的故障切换对应用有何影响。
- 对于基本层级实例,您可以通过临时将实例伸缩为更大的大小,来模拟维护更新的影响。观察影响后,您可以缩减回原始大小。
内存管理
内存管理可能是一道难题,因为开源 Redis 会发生常见的内存碎片。我们建议您降低实例的 maxmemory
配置,以便在出现高内存压力时产生开销。
在 Memorystore 实例上监控内存压力的最佳方法是使用系统内存使用率指标。如需查看详细指南以了解如何管理 Memorystore for Redis 的内存,请参阅内存管理最佳做法。
管理空闲连接
如果连接未正常终止,您可能会看到 Memorystore 实例的连接数量会随着时间的推移不断增加。此操作可能会对性能产生负面影响,尤其是在使用传输加密时,该功能会根据您的容量层级施加最大连接数限制。为了缓解此问题,我们建议使用 timeout
Redis 配置参数,该参数可让您设置自动终止空闲客户端连接之前的秒数。
Access Transparency 资源名称
敏感数据不应存储在 Memorystore for Redis 资源名称中。资源名称是指 Memorystore for Redis 实例名称和实例元数据(例如标记)。我们无法保证 Google Cloud Access Transparency 会保护存储在资源名称中的数据,并且这可能与贵组织的 Access Transparency 合规性要求相冲突。
部分无服务器环境需要无服务器 VPC 访问通道连接器
某些无服务器环境需要无服务器 VPC 访问通道连接器才能连接到 Memorystore for Redis。如果要使用其中一种环境进行连接,请为项目设置 Serverless VPC Access 连接器。
网络
我们建议您使用专用服务访问通道连接模式。Memorystore for Redis 使用两种连接模式:专用服务访问通道和直接对等互连。专用服务访问连接模式使 IP 范围管理更加简单,并允许您使用共享 VPC。
创建实例后,连接模式便无法更改。
如需了解详情,请参阅网络。
监控和提醒
建议使用监控和提醒,因为它们提供了 Redis 实例内存使用情况的关键信号。此外,您还可以深入了解 Redis 实例响应传入缓存请求的效率。
您应该设置以下默认警报:
CPU 使用率最佳实践
不当使用开销大的 Redis 命令会导致高延迟、无响应或连接问题。标准层级实例在灾难恢复期间提供高可用性,并且依赖于主节点和副本节点之间的异步复制。如果其中一个节点的命令处理非常耗时,导致 Redis 主线程被阻塞,则复制可能会受到影响。如果问题仍然存在且某个位置发生服务中断,则在服务中断位置写入的最新数据可能无法在其他位置获取。
我们建议您使用 Cloud Monitoring 为主线程 CPU 秒数 (redis.googleapis.com/stats/cpu_utilization_main_thread
) 指标设置提醒,以确保主节点的 CPU 使用率不超过 0.9 秒,每个副本节点的 CPU 使用率不超过 0.5 秒。
如果您的 Redis 实例超出了建议的值,我们建议您将实例扩容到更高的容量层级,或按照问题排查说明操作,以避免 CPU 密集型操作。