【发布时间】:2013-04-25 18:44:06
【问题描述】:
我正在使用 MemoryCache 在我的 MVC .Net 应用程序中存储键/值对。
我使用MemoryCache 有两个主要目的。一种是存储用户 ID 的会话,另一种是存储常量(这只是一个示例)理论上两种情况下的键可能是相同的,所以我想要一些方法来分离这 2 个。
我正在考虑 2 或 3 种方法。哪种方式更优越?还是有更好的选择?
-
缓存中的每个键都将在前面加上一个命名空间。
“用户会话:1”、“用户会话:2”
“常数:1”,“常数:2” -
使用嵌套字典作为键。
将有一个键“user_sessions”,其值将是一个将 ids 映射到会话对象的字典。将有一个键“常量”,其值为字典。
每个“命名空间”都有自己的 MemoryCache 实例。
#2 的缺点是,当我想获取属于用户 ID 的值时,我需要先获取字典,然后获取该字典中某个键的值。这意味着我需要将字典存储在内存中。
IE:
Dictionary<string, string> userSessions = MemoryCache.Default["user_sessions"]
object session = userSessions.get("1");
【问题讨论】:
-
为什么需要将常量存储在字典中?你不能只使用常量吗?
-
@Kenneth 我只是以它为例。问题仍然存在:如何将 MemoryCache 用于 2 种不同类型的键?
-
使用 1。您不必担心访问您在 2 中建议作为选项的包含字典的并发问题。这个答案很有帮助:stackoverflow.com/a/13425322/112196
标签: c# asp.net asp.net-mvc memorycache