我可以确定我的数据不会因为某种原因被删除,使用内存存储(Redis)是否安全,或者我应该将数据复制到云数据存储中?
当我增加内存容量时,我的所有数据都是安全的吗?
2 回答
Memorystore 中可能导致数据丢失(即由于某种原因导致内存刷新)的事件,大多只影响 Memorystore“基本”实例。
Memorystore 有两个实例层:Basic 和 Standard。
基本层实例受以下事件影响,这些事件将导致完全缓存刷新:
- 实例扩容(即升级或降级实例容量)
- 维护
- 实例重启(手动触发)
但是,标准实例层具有高可用性配置,其中包括异步复制数据的故障转移。在标准实例中,如果发生上述任何事件,副本将被提升为主实例,内存将不受影响。但是,唯一可能丢失的数据是在故障转移期间未传播到副本的写入(由于复制的异步性质)。尽管如此,故障转移过程通常很短,大约需要 30 秒才能完成。
同样,您可以配置实例达到最大内存容量时的行为,并在配置实例时使用该maxmemory-policy=noeviction
标志,以避免在发生此事件时实例丢弃内存。有关详细信息,请参阅官方 Redis 文档。
您提到将数据复制到 Cloud Storage,但目前无法将数据复制到 Memorystore 之外。
关于第二个问题,如上所述,在标准层实例中,更改实例容量时不会丢失任何数据。
简而言之:如果您想要最大可能的数据和实例正常运行时间可靠性,并避免不方便的内存刷新,Memorystore 在使用标准层实例时提供它。
关于标准层实例的一个注释,双重故障可能会导致实例完全刷新。我们正在努力实现持久性,并且还将提供将数据导入和导出到 Memorystore 实例的功能。
导入\导出功能计划在第二季度初推出。
此处概述了缩放行为。 https://cloud.google.com/memorystore/docs/redis/scaling-behavior
云存储产品经理