在 Redis 越来越火的今天,微软老大哥貌似也坐不住了,为了让 Redis 能原生的运行在 Windows 上,微软在几周前成立了一个小组,通过几周的工作,通过采用 LibUV 将 Redis 成功移植到 Win 系统下。(LibUV 是 node.js 中使用的网络 IO 模块封装,其通过在 Win 下使用 IOCP 机制,在 Unix 下使用 libev 包实现平台兼容)
于是在 Redis 的 github 项目上,微软向 Redis 项目提交了他们的补丁。
很有意思的,Redis 的作者立刻拒绝了将这一补丁加入主干代码中。但称这个补丁还是很有用,能够让在 Win 下使用 Redis 进行开发的同学在调试方面更方便,以前可能需要在虚拟机下去启一个 Redis。
随后 Redis 作者又专门发表了博文将自己对此事的看法进行了叙述。
首先他肯定这不是一件坏事,但是将其放到 Redis 主干中是不可能的,因为在作者看来,Redis 目前有很多重要并且复杂的工作要做,而对到 Win 平台的支持显然不在这些事情中。并且按作者的看法,Linux 在作为软件部署平台这事上,已经早就将 Win 平台撂倒了,对 Win 的支持是不重要也不紧急的事。
作者还举例说,即使是目前一些比较大的使用 Win 架构的应用,比如 Stack Overflow,也是 Win 与 Linux 混用的,所以,Redis 不原生支持 Win 平台,根本不会影响到用户的使用。
实事上,引入 LibUV 与 Redis 的设计理念是相背的。Redis 设计理念中一个很大的亮点是零包含,尽量不使用外部库,这也是 Redis 使用自己简单高效的 ae.c 网络驱动封闭,而不是使用通用的 libevent 或者其高性能版本 libev 的原因。
在目前的 Redis 中,只引入了两个外部扩展,一是更高效的 jemalloc(以及支持 google 的 tcmalloc)来替换原来的 libc 内存分配器,二是引入了 lua 库的支持。而这两者分别是在内存分配性能上和功能上都对 Redis 有非常大的改进。而通过引入 LibUV 来支持 Win 平台,看起来并没有上述二者那么必要和有说服力。