一般最佳实践

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