默认情况下,Google 云内存存储 redis 将 maxmemory-gb 设置为实例内存。当缓存已满时,这是否会造成逐出问题?

Google cloud memory store redis by default sets maxmemory-gb equals to instance memory. Does this pose a problem for eviction when cache is full?

提问人:Hessam 提问时间:5/1/2023 更新时间:5/5/2023 访问量:158

问:

我有一个容量为 2GB 的谷歌云存储实例 M10 层。我没有为它设置任何maxmemory-gb。默认情况下,它将 equal 设置为实例容量。现在我的问题是,当它达到阈值时,它开始逐出最近使用最少的密钥(同样是默认设置)。将 maxmemory 设置为低于实例容量的优缺点是什么?当然,除了丢失一些付费的预置内存之外。 我知道这是一个固执己见的问题,但重点是,默认设置真的安全吗?

redis redis-cache google-cloud-memorystore

评论


答:

0赞 Chanpols 5/5/2023 #1

默认设置等于实例内存通常是安全的,但对于具有大量数据量和大量密钥的工作负载,这可能会导致逐出问题。除了为其他系统进程保留内存外,设置为小于实例内存的数字可以防止逐出问题,但也可能导致性能不佳和更频繁的密钥逐出。建议根据作业的需求和能力修改 maxmemory-gb。maxmemory-gbmaxmemory-gb

标准实例层的高可用性配置包括用于异步复制数据的故障转移。如果发生上述任何情况,副本将提升为标准实例中的主实例,但内存不会更改。但是,由于复制的异步性质,唯一可能丢失的数据是在故障转移期间未传播到副本的写入。但是,故障转移过程通常很快,只需几秒钟即可完成。

为了防止实例在发生此事件时丢失内存,您可以设置实例超过其最大内存容量时的行为,并在配置它们时使用该标志。有关更多信息,请转到官方 Redis 文档。maxmemory-policy=noeviction