转载请注明文章出处:https://itlanyan.com/redis-on-windows

Redis是一个高性能的内存型NoSQL数据库,是服务端开发中常用的软件。Redis官方支持*nix、BSD等系统,没有提供对Windows平台的支持。Windows平台上的Redis由微软开发,但微软目前暂停了对其的支持和维护。微软Redis的Github仓库是 MicrosoftArchive/redis,最后发布的版本是两年前的3.2.100

在网络上搜索“redis windows”,不管新旧博文还是教程,都指向了3.2.100。软件老旧没问题,好用就行。但实践证明在大数据量下(超过几千个key),Windows上的3.2.100很快崩溃掉,出现如下错误提示:

redis 3.2.100

此时不关闭窗口,redis依然能提供服务。当存放的数据量增长到几万,redis会弹出第二个崩溃窗口,数据存取将不可用,彻底的挂掉了。

根据抛出的异常信息找原因和解决方案,在网络上搜寻一圈也没找到原因和解决方式。有人在redis官方仓库里提issue,官方说这是Windows平台上的问题,请到微软的仓库里提问题。可是微软已经不在维护redis,估计提问题的哥们也挺郁闷。

没找到解决办法前只能忍:只要能持续提供服务,不理会报错;如果真正挂掉了,就重启。为了及时处理故障,对平台运行情况作了监控,出现异常时马上报警通知。

某天晚上准备睡觉,接到报警邮件,只好开电脑处理问题。没想到半个小时后又报警,持续两次后顿时有点火大,不解决redis问题很可能就睡不好觉。想到之前在某个issue里有人推荐过其他人维护的版本,寻思可以试试。翻看微软redis仓库里的issue,第二个便是。原来 tporadowski 维护了一个版本,并且支持到4.0(官方目前的稳定版)。难得可贵的是,tporadowski 还一直在维护更新,修复bug的同时与上游代码同步。

本想先测试一下再上线,又经过一次报警后决定马上上线替换在用的3.2.100版本。使用新版没多久,看到出现”fork operation complete”和”background saving teminated with success”消息,顿时感觉妥了(之前找“EXCEPTION_ACCESS_VIOLATION”时官方就提到过是Windows下fork出了问题)。事实表明这个版本的redis非常的稳定,运行到如今,窗口的输出信息全部正常,也没有crash过,烦人的报警邮件也没了。

redis 4

总结

如果你在Windows平台上使用3.2.100版本的redis遇到问题,建议试试tporadowski维护的版本,下载地址是: https://github.com/tporadowski/redis/releases

参考

  1. https://redis.io
  2. https://github.com/MicrosoftArchive/redis
  3. https://github.com/tporadowski/redis