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的認識又加深了一點!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM