2012-11-02 52 views
0

我想了解如何memcache工作時(如果)你填滿了分配的內存緩衝區。特別是我想了解緩存中關鍵值對的生命週期。我正在談論低軌緩存操作,我直接創建鍵/值對。例如像memcache和rails如何在最大限制下工作?

Rails.cache.write key, cached_data 

Rails.cache.fetch key 

命令假定爲參數的緣故我有無限循環剛生成隨機的UUID作爲鍵和存儲的隨機數據。緩存填滿會發生什麼?舊的項目是否會被忽略,或者是否存在一些處理這種可能性的特定算法? 我在其他地方看過「Cache Invalidation is a Hard Problem」。

只是試圖瞭解它是如何工作的。

也許一些簡單的代碼示例說明創建和銷燬緩存數據的最佳方式?你是否必須明確定義條目何時到期?

回答

1

MemcacheD在後臺處理這個問題。看看這個問題 -

Memcache and expired items

您可以定義到期參數,看看這個wiki頁面 - 特定

http://code.google.com/p/memcached/wiki/NewProgramming#Cache_Invalidation

對於緩存失效到你的應用程序邏輯(而不是僅僅的內存耗盡在幕後),刪除功能將簡單地刪除數據。至於何時刪除你的應用中的緩存數據,這很難說 - 因此你提到的關於緩存失效的報價很難。我可能會建議你先考慮一下ActiveRecord回調,比如after_commit - http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html,以便在數據庫更改時輕鬆地使緩存的數據無效。

但這只是一個建議,有許多不同的緩存失效方案。