实例扩缩行为

本页介绍了 Memorystore for Redis 实例在扩缩期间的行为。如需了解如何扩缩 Redis 实例,请参阅扩缩 Redis 实例

扩缩实例会影响应用的性能和存储空间,具体视实例的层级而定。此外,根据当前使用的内存量扩缩实例也存在一些限制。本页介绍了扩缩实例对应用的影响以及何时可以扩缩实例。

扩缩实例的最佳做法

  • 建议您先导出实例数据,然后再扩缩您的操作。

  • 对于标准层级实例,为提高扩缩操作的速度和可靠性,请在低实例流量期间扩缩实例。如需了解如何监控实例流量,请参阅监控 Redis 实例

  • 在缩减标准层级实例的容量时,选择的大小必须大于存储的数据量,否则扩缩将失败。

    • 例如,如果有 10 GB 的实例,其中存储的数据为 5.5 GB,则可以将该实例的大小调整为至少 6 GB。实例使用的存储空间大小会显示在 Cloud Console 中的详情页面上。

基本层级扩缩行为

在将实例大小调整到所需容量时,基本层级实例会阻止读取和写入。调整实例大小后,将从缓存中清空所有数据。在实例流量较低的时候扩缩实例可最大限度地降低对应用性能的影响。

标准层级扩缩行为

在活动程度较低的时候扩缩标准层级实例可最大限度地降低扩缩对应用性能的影响。

标准层级实例在调节过程中几乎不会出现停机时间,因为所有标准层级实例都有主节点和副本节点。在调节期间,首先调整副本的大小,然后与主节点同步。一旦新的副本节点与新的主节点同步,新的主节点就会故障转移到新的副本节点。

在故障转移期间,指向实例的连接会被终止。应用应在代码中包含重试逻辑,以便能够重新连接到新的主节点。最后,调整旧的主节点实例的大小。

调节完成后,由于 Redis 复制的异步性质,缓存中可能存在过时或不一致的数据。应用应能够灵活处理故障转移期间出现的不一致问题。

扩缩期间的写入负载

扩缩标准层级实例时,请将实例写入负载保持在最小值。高写入负载可能会导致扩缩时间大幅延长,并可能导致扩缩操作失败。

过期的密钥

扩缩标准层级实例时不会同步过期的密钥。如果在扩缩之前您在 Redis 实例中有过期的密钥,则实例扩缩后密钥数将减少。