本页介绍了 Memorystore for Redis 实例在扩缩期间的行为。如需了解如何扩缩 Redis 实例,请参阅扩缩 Redis 实例。
扩缩实例会影响应用的性能和存储空间,具体视实例的层级而定。此外,根据当前使用的内存量扩缩实例也存在一些限制。本页介绍了扩缩实例对应用的影响以及何时可以扩缩实例。
扩缩实例的最佳做法
对于标准层级实例,为提高扩缩操作的速度和可靠性,请在低实例流量期间扩缩实例。如需了解如何监控实例流量,请参阅监控 Redis 实例。
在缩减标准层级实例的容量时,选择的大小必须大于存储的数据量,否则扩缩将失败。
- 例如,如果有 10 GB 的实例,其中存储的数据为 5.5 GB,则可以将该实例的大小调整为至少 6 GB。实例使用的存储空间大小会显示在 Google Cloud 控制台中的详情页面上。
实例扩缩行为
在伸缩基本层级和标准层级实例期间,数据会保留。在伸缩期间,实例会经历短暂的连接重置(几分钟或更短时间)。应用应在代码中包含重试逻辑,以便能够重新连接到实例。IP 地址和连接字符串保持不变。
由于短暂的连接中断,在实例不可用的那段时间内,可能有少量过时或不一致的数据未写入或更新到缓存。
如果您在连接中断期间发出写入请求,Memorystore 会返回错误 READONLY You can't write against a read only replica
。此错误是暂时性的,只会持续几秒钟。该问题会在伸缩操作完成后解析。
伸缩时的写入负载
在实例流量较低期间应扩缩实例以最大限度地降低对应用的性能影响。高写入负载或高内存压力可能会导致伸缩操作时间大幅延长,并可能导致操作失败。如需了解详情,请参阅扩缩和版本升级操作。
过期的密钥
扩缩标准层级实例时不会同步过期的密钥。如果在扩缩之前您在 Redis 实例中有过期的密钥,则实例扩缩后密钥数将减少。