答案 0 :(得分:5)
从版本3.0.3开始,windows端口开发人员放弃了dlmalloc并开始使用jemalloc作为内存分配器。该端口实际上被考虑用于生产用途。 3.0.500版本已获得ms开发人员(see here)批准生产。
还有一些地狱,所以他们绕过unix fork将数据保存到磁盘。 Microsoft开发人员将其命名为point-in-time heap snapshot
。这是生产中最具争议的部分:
Windows下的Redis可能需要比Linux版本更多 3倍的内存。这种行为被认为是正常的,因为窗口中的交换文件很容易比实际的RAM大3倍。
我认为只有将Redis用作LRU缓存才能将数据保存到磁盘上才能接受。
如果Redis节点使用大量内存,至少Redis在Windows下是绝对容易受到影响的。例如 - 我们尝试在服务器上使用Redis for windows(v2.8,v3.0.3,v3.0.5),其中512 GB的内存和2个SSD驱动器(raid 0中每个256 gb)用作系统磁盘。 Windows交换文件没有任何限制。我们的测试模拟了我们的生产 - 使用RDB进行大量写入和保存,利用率约为内存的60-70%。这里有很多动手行为,然后这个节点试图保存快照 - 内存消耗跳跃,保存期间连接冻结。这种行为在相同的硬件上从未发生过undex linux。