转载请注明文章出处:https://tlanyan.me/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
依然能提供服务。当存放的数据量增长到几万,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过,烦人的报警邮件也没了。
总结
如果你在Windows平台上使用3.2.100
版本的redis
遇到问题,建议试试tporadowski
维护的版本,下载地址是: https://github.com/tporadowski/redis/releases。