2011-05-13 51 views
3

(首先,我的英語不是很好,請)memcached中的延遲過期機制如何操作?

正如我們所知,memcached的提供懶惰到期,以及「取代」在其樓板LRU的數據,但我不是很清楚它是如何做到這一點。例如,如果一塊板坯已滿,但該板坯中的某些數據已過期,那麼將數據添加到板坯時會發生什麼情況?

  1. 是否memcached的發現一些過期的數據,並與添加的數據替換它們,或
  2. 它更換LRU數據,或
  3. 它做點別的?

據我所知,懶惰到期是這樣的memcached是不是主動地從每個切片刪除過期數據,但是當到期的項的關鍵是參考,而不是隻刪除過期條目。這是浪費資源,不是嗎?

回答

4

當一個項目被請求時(一個獲取請求),Memcached會檢查 的過期時間,以確定該項目在返回 之前是否仍然有效。

同樣,當向高速緩存添加新項目時,如果高速緩存已滿,則在更換高速緩存中的 最少使用項目之前,它將查看過期項目以進行替換。

因此,只有在獲取請求爲 發送過期項目或清除過期項目時纔會清除過期項目,因爲需要使用 存儲。

+1

如果slab滿了一些過期的數據,但這些過期的數據沒有請求,那麼它將使用LRU mechinism替換緩存中最少使用的項目。我對嗎? – 2011-05-13 10:24:19

+0

是的,你說得對 – 2011-05-13 11:34:22