一般最佳实践

本页面提供了如何以最优方式使用 Memorystore for Redis 的指导。本页面还指出了需要避免的潜在问题。

如需问题排查方案的列表,请参阅问题排查

RDB 导出

导出 RDB 备份时,请遵循以下指南:

资源密集型操作

对于标准层级 Redis 实例,以下操作会在操作期间使用额外的内存:

由于复制功能,版本升级、扩缩和手动故障切换会占用额外的内存(对于标准层级实例而言)。这些操作遵循标准层级实例升级行为中所述的复制过程。

导入和导出操作需要额外的内存,因为存在与这些操作相关的分支 Redis 进程和写入时复制数据管理。

为了减少资源密集型操作的缺点,您应该:

需要连接重试的操作和情景

以下操作和情景会中断您的网络与 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 密集型操作