假設我有一組用戶。每個用戶都有一個USER_ID,用戶名和Tenant_ID。緩存對象集合的最佳方法。一起或作爲單獨的項目?
有時我需要的所有用戶特定Tenant_ID。
有時候,我需要一個特定的用戶基礎上USER_ID」。
有時候,我需要根據用戶名用戶。
我會永遠可用的Tenant_ID作爲查找的一部分使用。
實現此數據緩存層的理想方法是什麼?
因爲我正在處理多租戶系統,所以我應該做些什麼?
管理所有可能的緩存鍵的最佳方法是什麼?
選項#1:存儲所有用戶一起「Tenant_1_Users」
與此問題的一個關鍵是下,我會大量無用數據,通過線路傳輸。如果我只需要找到一個特定的用戶,那麼我需要在檢索整個集合後使用LINQ或其他東西在代碼中進行查找。
選項2:在不同的鍵(例如「TenantID_1_UserID_5」和「TenantID_1_Username_Jason」)下複製相同的用戶對象。
這裏的問題是管理所有不同的密鑰和用戶對象的位置。特別是如果我需要刷新特定用戶,因爲它已在數據庫中更新。我現在需要知道它可以存儲的所有可能的位置。由於同一個用戶可以使用不同的密鑰,因此也使用更多的內存。
相關:AppFabric Cache 'Design' - Caching Individual Items or Collections?
問題是,Azure AppFabric緩存不支持區域,標記或通知。
對,這絕對是數據重複最大的問題之一。 – Vyrotek 2011-05-05 19:07:02