php - Memcached的flush_all為什麼要設計成只刪除鍵而不刪除值?
PHP中文网
PHP中文网 2017-06-12 09:20:27
0
1
577

不刪除值意味著值仍然佔據的記憶體空間,而沒有了鍵,這些值的存在也沒辦法存取啊,這樣做的意義是什麼?

PHP中文网
PHP中文网

认证0级讲师

全部回覆(1)
迷茫

你可以看一下這篇文章:

Lazy Expiration

memcached內部不會監視記錄是否過期,而是在get時查看記錄的時間戳,檢查記錄是否過期。 這種技巧被稱為lazy(惰性)expiration。因此,memcached不會在過期監視上耗費CPU時間。

flush_all只做一件事:把所有鍵值標記為已過期,但不會回收記憶體。因為當時沒有回收記憶體這個必要。只有當下一次使用者存取相同鍵值時,memcached才檢查鍵值,這時發現此鍵值已過期,於是回收對應此鍵值的記憶體。這樣做的目的是為了最大限度的節省CPU時間。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板