我使用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