本页面提供了如何以最优方式使用 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 密集型操作