参考这篇关于Booksleeve的帖子以及没有官方 Windows Redistribuition 的事实,最佳实践是什么?最好在 Win32 上编译,还是“非官方”的 win32/64 发行版可靠且受维护?
1 回答
Booksleeve 只是 any-other-redis-client,与您选择使用的 redis-server 版本/平台相当正交。就个人而言,我目前只会使用 redis-server 的 win32 实现作为本地开发人员的便利。生产机器可能应该使用 linux 构建(如果重要,我们使用 ubuntu 服务器)。其原因归结为一个简单的事实,即 redis-server 旨在利用廉价的 linux fork/copy-on-write 功能来执行后台保存(以及可能的其他功能)。Windows没有这样的分叉,“windows 上的 linux”实现通常会进行内存复制(非常昂贵,并且可能会显着影响某些操作的执行方式)。
更糟糕的是:至少有一个纯 Windows 版本的 redis-server 只是简单地将请求替换BGSAVE
为SAVE
请求;在繁忙的服务器上,这就是死亡:SAVE
是同步的,而 redis 是单线程的,通常只是利用单个操作非常快的事实,因此您通常不会注意到。但是:如果你突然收到一个SAVE
需要 20 秒的请求,那么你的 redis 服务器在这 20 秒内什么都不做。当您依赖通常在 0.3 毫秒左右的回复时,这是一个大问题。
微软一直在研究 redis-server 的端口,很可能现在已经准备好生产了;但是,考虑到所有因素,现在我宁愿坚持在 linux 服务器上使用经过良好测试的主要实现。
但是:对于临时开发人员使用,任何 win32 构建都应该没问题。