memcached缓存项过期问题

   对于.net开发来说,linux系统可能用得比较少。但对于一个架构师来说,linux系统是必须要掌握的,所以自己也在加强这方面的学习。之前使用memcached都是在windows系统上且版本还是1.2.6的,由于最近要搞linux系统,就在CentOS上用yum安装了memcached。yum安装的memcached是1.4.4版本的,所以问题也就来了。原来的.net程序set一个有过期时间限制的缓存项到memcached,明明set成功了,但get的时候就出错了(结果为null)。

   这两天找了不少网站,看了不少英文文档,还是没能搞定问题。这期间还上网找了memcached1.4.4的windows版本,装到虚拟机的windows2003上,但还是遇到一样的问题。最后就把问题锁定在memcached的客户端和memcached新版本这两个点上。在一些网站上也有人说到这样的情况,说是换另一个版本就行了。于是我就换了memcached1.4.13,可结果还是一样。竟然这样就换个客户端试试吧,可换了另一个客户端也还是不行,崩溃啊!

   在这个时候我都想放弃memcached新版本了,还是用旧的版本好了。但今天阅读memcached的文档时发现它的还有很多我平时没有注意的命令,于是就是去查命令,结果,发现我set进去的缓存项的过期时间比memcached的启动时间还要早,那就怪不得我get的时候就get不到了,因为它已经过期了。原来问题在这里,那为什么会这样呢,这时我发现虚拟机的linux和windows2003的系统时间都跟本地机的不一样,这应该是memcached新版本启动时使用服务器系统时间造成的。那是不是修改下系统时间就可以解决了。于是我马上对linux系统进行修改。

 1 tzselect //设置时区 
 2 cp /etc/localtime /etc/localtime.bak //备份当前时区设置
 3 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime //用新的设置替换当前的默认设置
 4 date -s 01/23/2013 //修改日期
 5 date -s 22:36:40 //修改时间
 6 clock -w //把时间设置保存起来

    修改完成后,重新配置memcached,启动。
    调试程序,我的天,终于成功了!

    吸取了这次教训,以后做任何练习都要先把环境配置好,不能因为是平时练习就有所忽略。不过也是这个问题让我对memcached的认识又加深了一点!

 

posted on 2013-01-23 23:11  穆穆  阅读(5142)  评论(0编辑  收藏  举报