HttpRuntime.Cache对象中缓存键的最大长度是多少?

17

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

对于这个特定的应用程序,我们的数据库查询涉及大量参数,因此我们的缓存键看起来像这样:

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

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

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

1个回答

26

在内部,字典使用您提供的键的哈希代码。实际上,每个键都存储为整数。

您无需担心。


作为一个极端的例子……假设我的缓存键大小为4K。这比可以存储在整数中的信息还要多。那么,如何将其存储为整数并保持唯一性呢? - frankadelic
5
.NET使用哈希算法将任何字符串转换为单个整数(类似于MD5,但哈希适合4个字节)。选择该算法可能是为了在速度和唯一性之间取得平衡,但哈希冲突是不可避免的。字典会自动处理这些冲突。有关详细信息,请查看维基百科中的哈希表条目:http://en.wikipedia.org/wiki/Hash_table - BC.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接