最佳答案
从 3.0.3 版开始,windows 端口开发人员放弃了 dlmalloc,并开始使用 jemalloc 作为内存分配器。该端口实际上被考虑用于生产用途。 3.0.500 版本已被 MS 开发人员 ( see here ) 批准用于生产。
他们是如何绕过 unix 分支将数据保存到磁盘的,这真是太糟糕了。 Microsoft 开发人员将其称为 point-in-time heap snapshot
。这是在生产中使用时最具争议的部分:
Redis under windows may need up to 3 times more memory than you need in linux version. This behavior is considered normal, because swap file in the windows can easily be up to 3 times larger than the actual amount of RAM.
我认为这只有在使用 Redis 作为 LRU 缓存或根本不将数据保存到磁盘时才可以接受。
如果你的Redis节点使用大量内存,至少Windows下的Redis是绝对容易受到影响的。例如 - 我们尝试在具有 512 GB 内存和 2 个 SSD 驱动器(RAID 0 中每个 256 GB)用作系统磁盘的服务器上使用 Windows 版 Redis(v2.8、v3.0.3、v3.0.5)。 Windows 交换文件没有任何限制。我们的测试模拟了我们的生产 - 使用 RDB 进行大量写入和保存,内存利用率约为 60-70%。这里有很多举手行为,然后该节点尝试保存快照 - 内存消耗跳跃,保存期间连接卡住。这种行为永远不会发生在同一硬件上的 undex linux。
关于windows - Windows下【Redis 64Bit】能否用于生产环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34873212/