在windows上部署使用Redis
这两天在重新做公司内网首页,信息都是从别的系统获取的,产品原来打算直接上静态页,jsonp异步取数据。但是一来jsonp比较坑(一直不喜欢),二来整个页面的数据都异步获取的话,刚刚打开页面的时候会空白一片,体验极其差。所以决定用node.js + express + redis简单搞下。今天早晨一直在折腾Redis,看了挺多文章,可能是版本或者其他的原因,我遇到的问题他们都没有提,不过终于还是部署上了,下面把过程写下给大家参考。
下载Redis
在Redis的官网下载页上有各种各样的版本,我这次是在windows上部署的,要去GitHub上下载。目前的是2.8.12版的,直接解压,在\bin\release
目录下有个压缩包,这就是我们需要的:
启动Redis
直接在上图的目录打开命令窗口,运行:
redis-server redis.windows.conf
结果就悲剧了,提示:QForkMasterInit: system error caught. error code=0x000005af, message=VirtualAllocEx failed.: unknown error
。原因是内存分配的问题(如果你的电脑够强悍,可能不会出问题)。解决方法有两个,第一:启动的时候使用--maxmemory
命令限制Redis的内存:
redis-server redis.windows.conf --maxmemory 200m
第二种方法就是修改配置文件redis.windows.conf
:
maxmemory 209715200
注意单位是字节,改完后如下:
之后再运行redis-server redis.windows.conf
就可以启动了:
但是问题又来了,关闭cmd窗口就会关闭Redis,难道服务器上要一直开着吗?这显然是不科学的,下面看怎么在服务器上部署。
部署Redis
其实Redis是可以安装成windows服务的,开机自启动,命令如下:
redis-server --service-install redis.windows.conf
安装完之后,就可看到Redis已经作为windows服务了:
但是安装好之后,Redis并没有启动,启动命令如下:
redis-server --service-start
停止命令:
redis-server --service-stop
还可以安装多个实例
redis-server --service-install –service-name redisService1 –port 10001 redis-server --service-start –service-name redisService1 redis-server --service-install –service-name redisService2 –port 10002 redis-server --service-start –service-name redisService2 redis-server --service-install –service-name redisService3 –port 10003 redis-server --service-start –service-name redisService3
卸载命令:
redis-server --service-uninstall
最后提示一下:2.8版本的不支持32位系统,32位系统要去下载2.6版本的。2.6版本的无法像上面一样方便的部署,它提供一个叫RedisWatcher的程序来运行redis server,Redis停止后会自动重启。
另外推荐一个Redis可视化管理工具:Redis Desktop Manager,官网的下载地址被墙了,可以在我的网盘下载 v0.7.6版,放个截图:
标签:Redis
thk~
thanks for your artical
请问你能以windows服务方式正常运行多个实例吗?
这个没试过,我只是看文档上写了。刚才试了下,可以安装多个实例,但是启动不起来。
求解决啊
暂时没找到解决方法,不过,每个Redis实例可以有多个db,看能不能变通解决下。
官方的文档貌似写错了…里面的选项 "–service-name" 应该是 "–-service-name"
–service-name 貌似也不可以呀
费解,不科学啊…我这可以开2个服务分别启动.
是不是不同的redis实例使用了同一个端口导致install到了服务但只能启动一个…
要么在配置文件里面的 port 里面修改 要么直接在install的时候指定端口 –port
这样试试?
谢谢,学到了
和tomcat 如何搭配呢.
没用过tomcat,如果你说的“搭配”是指类似nodejs的反向代理的话,直接配置就好了。
好的,谢谢
赞
redis-server –service-install redis.windows.conf –service-name redisService2 –port 10002
可以安装多个,-port错了!是–port
现在不方便测试,不过我记得我是按照文档写的,难道文档错了[思考]