gpt4 book ai didi

用于 2 种不同类型的键的 C# MemoryCache?

转载 作者:太空狗 更新时间:2023-10-29 20:27:53 27 4
gpt4 key购买 nike

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

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

我正在考虑 2 或 3 种方法。哪种方式更优越?或者有更好的选择吗?

  1. 缓存中的每个键都将以命名空间为前缀。

    "user_session:1", "user_session:2"
    "constants:1", "constants:2"

  2. 使用嵌套字典作为键。

    There will be a key "user_sessions" whose value will be a Dictionary that maps ids to the session object. There will be a key "constants" whose value will be a Dictionary.

  3. 每个“命名空间”都有自己的 MemoryCache 实例。

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

即:

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

最佳答案

选择选项 #3!

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

选项#2:

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

选项#1:

  • 您不必连接字符串(性能和内存)
  • 较长的键名会产生较长的比较时间。
  • 添加项目会比较慢,因为它包含两倍的键。

关于用于 2 种不同类型的键的 C# MemoryCache?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16323733/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com