我正在使用MemoryCache在我的MVC .Net应用程序中存储键/值对。

我使用MemoryCache有2个主要目的。一种是存储用户ID的 session ,另一种是存储常量(这只是一个示例),在两种情况下,键在理论上都可以是相同的,因此我想用某种方法来分隔这两个键。

我正在考虑2或3种方式。哪种方法更好?还是有更好的选择?

  • 缓存中的每个键都将以 namespace 作为前缀。

  • 使用嵌套字典作为键。

  • 每个“ namespace ”都有其自己的MemoryCache实例。

  • #2的缺点是,当我想获取属于用户ID的值时,我需要先获取字典,然后获取该字典中键的值。这意味着我需要将字典存储在内存中。

    IE:
    Dictionary<string, string> userSessions = MemoryCache.Default["user_sessions"]
    object session = userSessions.get("1");
    

    最佳答案

    选择选项3!

  • 对于程序员来说,更容易访问。
  • 这是最快的解决方案(请参阅其他解决方案的评论)
  • 这是内存效率最高的解决方案(请参阅其他解决方案的评论)

  • 选项2:
  • 你自己说的。
  • 如果缓存决定删除键,则会删除整个字典,从而导致更多的值重新加载。

  • 选项1:
  • 您不必隐含字符串(性能和内存)
  • 较长的键名将产生较长的比较时间。
  • 添加项目的速度会变慢,因为它包含的 key 是其两倍。
  • 10-08 03:10