【问题标题】:Maximum length of cache keys in HttpRuntime.Cache object?HttpRuntime.Cache 对象中缓存键的最大长度?
【发布时间】:2011-01-20 19:09:35
【问题描述】:

我们在 ASP.NET 中使用 HttpRuntime.Cache API 来缓存从数据库中检索到的数据。

对于这个特定的应用程序,我们的数据库查询有很多参数,所以我们的缓存键看起来像这样:

table=table1;param1=somevalue1;param2=somevalue2;param3=somevalue3;param4=somevalue4;param5=somevalue5;param6=somevalue6...等...

对于某些查询,我们的参数太多,以至于缓存键长达数百个字符。

我的问题:这些缓存键的长度是否有限制?在内部,它使用字典,所以理论上查找时间应该是恒定的。但是,我想知道我们是否有可能遇到一些性能/内存问题。

【问题讨论】:

    标签: c# asp.net caching dictionary


    【解决方案1】:

    在内部,Dictionary 使用您给它的键的哈希码。实际上,每个键都存储为整数。

    您无需担心。

    【讨论】:

    • 作为一个极端的例子......假设我的缓存密钥大小为 4K。这是比整数存储更多的信息。那么,如何将其存储为整数并且是唯一的?
    • .NET 使用散列算法将任何字符串转换为单个整数(有点像 MD5,除了散列适合 4 个字节)。选择该算法可能是为了平衡速度和唯一性,但会发生哈希冲突。字典会自动处理这些冲突。具体细节请查看维基百科中的哈希表条目:en.wikipedia.org/wiki/Hash_table
    猜你喜欢
    • 2013-06-19
    • 2015-07-18
    • 1970-01-01
    • 2017-05-25
    • 2010-09-06
    • 2010-09-24
    • 2021-06-29
    • 2011-09-22
    相关资源
    最近更新 更多