我想知道在以下情况下'maxmemory'的安全设置是什么:
在redis docs中,以下是关于BGSAVE事件中内存使用量增加的说法:
如果您在一个非常大量写入的应用程序中使用Redis,在将RDB文件保存到磁盘或重写AOF日志时,Redis可能会使用通常使用的内存的2倍。
我是否正确,这意味着在这种情况下,maxmemory设置应设置为不高于(8GB - 1GB)/ 2 = 3.5GB?
如果是这样,我将为redis文档创建一个拉取请求,以更清楚地反映这一点。
答案 0 :(得分:3)
我建议在这种情况下限制为3GB。是的,文档几乎是正确的,运行bgsave将短期内存需求加倍。但是,我更喜欢为系统保留2GB内存,或者最多保留40%最大内存的持久主机内存。
您表明您的申请量很大。在这种情况下,我强烈建议第二台服务器执行保存操作。我发现在高写入和bgsave期间,客户端的响应时间可能会变高。它不是Redis本身导致它,而是服务器本身的响应。对于虚拟机尤其如此。在此设置下,您将使用第二台服务器从主服务器进行从属服务并保存到磁盘,而第一台服务器仍保持响应状态。