2010-03-24 73 views
3

我試圖找到一種更好的方式來處理memcache鍵,以更文明的方式存儲,檢索和更新緩存層數據。組織memcache鍵

找到這種模式,看起來不錯,但我怎麼把它變成PHP應用程序的功能部分?

身份地圖模式:http://martinfowler.com/eaaCatalog/identityMap.html

謝謝!

更新:我已經被告知,顯然確實做了很多的這個修改後的內存緩存(memcache的標籤),但我不能在我的Windows開發機器上安裝Linux軟件...

+0

那麼,你怎麼理解'更文明的方式'?你需要什麼功能?什麼是用例? 另外q:生產環境是什麼,它也是一個贏盒? – 2010-04-23 14:11:00

+0

Nop,它會使用unix box live。我想要做的是能夠使用他們的orgin標記某些值,例如>> products <<,然後能夠清除/無效所有產品標記的密鑰 – Industrial 2010-04-26 07:17:47

回答

5

好, memcache使用IS是一個標識映射模式。你檢查你的緩存,然後你打你的數據庫(或其他任何你使用的)。您可以通過存儲對象而不僅僅是值來查找關於源的信息,但是您會爲此獲取性能。

您實際上無法向緩存詢問緩存內容作爲列表。要大規模無效化,你必須保存一個你放入並迭代它的列表,否則你將不得不迭代每個可能符合關注模式的可能的密鑰。您指出的資源memcache-tag可以簡化這一操作,但它似乎並未與memcache項目內聯保持一致。

因此,您的選擇現在是迭代刪除,或完全刷新緩存的所有內容。因此,我提出設計考慮是你應該問的問題。爲了得到一個有用的答案給你,我這樣查詢:你爲什麼想這樣做?

+1

感謝Autocrazy。爲什麼我們想大規模無效的東西,基本上是爲了能夠創建存儲的密鑰之間的關係,並強制對mySQL數據庫中的所有相關密鑰進行更改。 – Industrial 2010-04-28 07:59:02