【问题标题】:C# MemoryCache Implementing with two Items as a Key of LocalCacheC# MemoryCache以两个项目作为LocalCache的键实现
【发布时间】:2019-03-11 10:29:56
【问题描述】:

我在 SP 中使用两个输入参数(UserID、ProfileID)从数据库中检索数据。我想将结果存储在 memoryCache 中,因为结果在一段时间内是静态的。我想用

string cacheKey = UserID.toString() + "_" + ProfileID.ToString() 作为键。如果我连接字符串,这是一个非常简单的解决方案。

我可以使用静态 ConcurrentDictionary 作为缓存和元组作为缓存键,但我确实需要在一段时间后使缓存过期。

我想知道任何其他替代方法/想法,以及使用作为键的字符串连接是否有任何缺点。

【问题讨论】:

    标签: c# asp.net .net caching memorycache


    【解决方案1】:

    您对缓存键的字符串连接的解决方案很好,我会选择那个。

    如果你想使用元组作为缓存键,ConcurrentDictionary 接受任何对象作为缓存键,但它依赖于“GetHashCode()”对象方法来实际使用它作为键,所以你需要验证您的元组生成的 HashCode 是否一致,否则您将遇到错误。

    字符串连接是一种更简单的解决方案。

    【讨论】:

    • 另一种选择是扩展元组类并覆盖 GetHashCode 方法以输出字符串连接。这样,您将拥有一个表示键的类,并且它可能使其他开发人员更容易使用本地缓存。
    猜你喜欢
    • 2020-12-01
    • 1970-01-01
    • 2011-10-03
    • 2018-05-10
    • 2021-03-20
    • 2019-05-31
    • 1970-01-01
    • 2014-02-07
    • 2014-05-21
    相关资源
    最近更新 更多