不刪除值意味著值仍然佔據的記憶體空間,而沒有了鍵,這些值的存在也沒辦法存取啊,這樣做的意義是什麼?
迷茫2017-06-12 09:22:27
你可以看一下這篇文章:
Lazy Expiration
memcached內部不會監視記錄是否過期,而是在get時查看記錄的時間戳,檢查記錄是否過期。 這種技巧被稱為lazy(惰性)expiration。因此,memcached不會在過期監視上耗費CPU時間。
flush_all只做一件事:把所有鍵值標記為已過期,但不會回收記憶體。因為當時沒有回收記憶體這個必要。只有當下一次使用者存取相同鍵值時,memcached才檢查鍵值,這時發現此鍵值已過期,於是回收對應此鍵值的記憶體。這樣做的目的是為了最大限度的節省CPU時間。