近来由于项目需要,将redis集成到项目中,使项目中的数据缓存部分交于redis管理。其中有一个典型的问题,数据无法保存到redis指定的磁盘目录中。
1、环境:
redis2.0.2
win7,server2003
jdk1.6.19
2、出现不能保存的不同情况
(1)通过redis-cli.exe,或是jedis操作redis,用set命令将key/value对存入到redis-server中,结果一直没有保存到硬盘。
原因:在启动redis-server.exe时,启用的是默认设置,而默认设置是不将redis-server中的数据持久化到硬盘中,所以此时要显示指定redis.conf配置文件给redis-server.exe,如redis-server.exe redis.conf的命令来启动redis-server。当然也要配置好redis.conf中的save参数。
(2)redis-cli.exe的set命令保存时返回为ok,但是redis-server中的save db to disk时出现无法保存,或是无法创建相关线程去保存数据,具体code为
"[main] redis-server 16676 fork: child -1 - CreateProcessW failed, errno 2"的提示。
原因:这个问题困扰了我两个小时之多,在其它机器上很好,挪了个机器就不行了,从提示不难看出与系统兼容性无关。最后才推出,原来是中文路径导致的,redis的windows版对中文路径下的碰盘保存路径是不识别的,即保证碰盘路径为中文即可。
时间原因就到此,欢迎交流。