2011-07-16 30 views
0

我們的系統在Azure上使用AppFabric緩存,我們有多種應用程序和角色共享相同的緩存值。我正在尋找一些關於如何組織所有密鑰的建議,並且還可以在更改後無效/刷新條目。如何組織和維護緩存鍵並對其進行刷新?

我已經玩弄了一個靜態類和一組創建密鑰的方法的想法。例如:

string CreateUserByIdKey(int userId) - Returns "User_5" 
string CreateWidgetsByCompanyKey(int companyId) - Returns "Widgets_Company_5" 

這樣我就有了一種半結構的方式來創建和使用不同應用程序中的鍵。但這並不感覺非常優雅和可維護。它還要求我創建特殊的刷新方法,以便在數據更新時知道哪些鍵需要失效。

什麼是更好的方法來做到這一點?

回答

1

我們的方法是使用CacheManager策略擴展名。 CacheManager位於解決方案的核心部分,該核心通過所有角色被引用。

對於被共享,就像生成緩存鍵的策略,甚至端點名稱的東西,我們有WellKnownComponents列表。這是TT生成的文件(以及文件),可以使用部分類進行擴展。

在你的情況下,我會做的是將緩存密鑰ID生成函數添加到我衆所周知的組件類中,然後通過應用程序進行引用,例如,

var seeker = CacheManager.Get<RequestOnly>(WellKnownComponents.Seeker.Caching.GetSeekerKey(seekerId),() => GetSeekerFromDataBase(seekerId)); 

這大概是我們如何做到的。是的,你仍然需要廢票特殊沖洗方法,但上漲的部分是你既可以單獨並結合他們在那裏是重要的,相關的(例如,您的一個組成部分,而不是周圍的溶液)。