2016-06-12 88 views
1

我想將對象的集合存儲在緩存中。在緩存中存儲對象集合的方法或策略

{ 
    "name": "Dep1", 
    "employees": [{ 
     "id": 1, 
     "name": "emp1", 
     "profilePic": "http://test.com/img1.png" 
    }, { 
     "id": 2, 
     "name": "emp2", 
     "profilePic": "http://test.com/img2.png" 
    }, { 
     "id": 3, 
     "name": "emp3", 
     "profilePic": "http://test.com/img3.png" 
    }, { 
     "id": 4, 
     "name": "emp4", 
     "profilePic": "http://test.com/img4.png" 
    }] 
} 

在這種情況下,如果員工1更改他的個人資料圖片,我需要使完整的緩存對象無效以保持數據一致性。 這種方法破壞了緩存,因爲每當我需要清除該完整對象的員工有任何更新時。

有沒有更好的方法或設計我們可以遵循優化呢?

感謝

+0

將每個對象存儲在不同的密鑰中,然後只是使每個密鑰無效。或者考慮使用[MongoDB](https://docs.mongodb.com/manual/tutorial/) – thepirat000

+0

以及如何將它存儲在MongoDb將解決這個問題? –

回答

0

這是假設是一個Redis的問題嗎?我會認爲它是通用的。

只檢索ID,然後通過它的ID請求每個條目。

將每個請求的條目列表僅存儲爲ID列表。

您現在可以緩存列表以及緩存每個條目。

由於您只需檢索ID,因此您可以對數據進行非常簡單的超高效索引(由於數據只是ID,因此將始終直接從索引中提取數據)。更新可能需要也可能不需要使列表的緩存無效,則使條目緩存無效就足夠了。即使你使列表失效,你仍然會有相當不錯的表現,因爲你不太可能經常使輸入緩存失效。