选择redis maxmemory大小和BGSAVE内存使用情况

时间:2013-02-19 13:31:35

标签: memory redis

我想知道在以下情况下'maxmemory'的安全设置是什么:

  • 写重型应用程序
  • 8GB RAM
  • 让我们假设其他进程占用大约1GB
  • 这意味着redis进程的内存使用量可能永远不会超过7GB
  • 每次BGSAVE事件的内存使用量都会翻倍,因为:

在redis docs中,以下是关于BGSAVE事件中内存使用量增加的说法:

  

如果您在一个非常大量写入的应用程序中使用Redis,在将RDB文件保存到磁盘或重写AOF日志时,Redis可能会使用通常使用的内存的2倍。

  • maxmemory限制大致与redis-cli INFO中的'used_memory'进行比较(如here所述)并且不会将redis使用的其他内存考虑在内

我是否正确,这意味着在这种情况下,maxmemory设置应设置为不高于(8GB - 1GB)/ 2 = 3.5GB?

如果是这样,我将为redis文档创建一个拉取请求,以更清楚地反映这一点。

1 个答案:

答案 0 :(得分:3)

我建议在这种情况下限制为3GB。是的,文档几乎是正确的,运行bgsave将短期内存需求加倍。但是,我更喜欢为系统保留2GB内存,或者最多保留40%最大内存的持久主机内存。

您表明您的申请量很大。在这种情况下,我强烈建议第二台服务器执行保存操作。我发现在高写入和bgsave期间,客户端的响应时间可能会变高。它不是Redis本身导致它,而是服务器本身的响应。对于虚拟机尤其如此。在此设置下,您将使用第二台服务器从主服务器进行从属服务并保存到磁盘,而第一台服务器仍保持响应状态。