我使用MemoryCache
在我的MVC .Net應用程序中存儲鍵/值對。C#MemoryCache用於2種不同類型的密鑰?
我使用的主要目的有兩個:MemoryCache
。一個是存儲用戶ID的會話,另一個是存儲常量(這只是一個例子)。這兩個鍵的理論上都是相同的,所以我想用一些方法來分開這兩個。 2或3種方式。哪種方法更好?還是有更好的選擇?
高速緩存中的每個鍵都會被命名空間前置。
「USER_SESSION:1」, 「USER_SESSION:2」
「常數:1」, 「常數:2」使用嵌套詞典作爲密鑰。
將會有一個關鍵的「user_sessions」,其值將是一個將id映射到會話對象的Dictionary。將有一個關鍵的「常量」,其價值將是一個詞典。
每個「名稱空間」都有它自己的MemoryCache實例。
的缺點與#2是當我想要得到屬於用戶ID的價值,我需要先拿到字典,然後得到價值在字典中的一個關鍵。這意味着我需要將字典存儲在內存中。
IE:
Dictionary<string, string> userSessions = MemoryCache.Default["user_sessions"]
object session = userSessions.get("1");
爲什麼你需要在字典中存儲常量?難道你只是使用常量? – Kenneth 2013-05-01 18:09:00
@Kenneth我只是用它作爲例子。問題依然存在:如何將MemoryCache用於2種不同類型的密鑰? – 2013-05-01 18:09:41
使用1.您不必擔心訪問您在2中作爲選項提供的包含字典的併發性問題。此答案有幫助:http://stackoverflow.com/a/13425322/112196 – 2013-05-01 18:18:10