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

fra*_*lic 15 c# asp.net caching dictionary

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

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

表表1 =;参数1 = somevalue1;参数2 = somevalue2;参数3 = somevalue3; param4 = somevalue4; param5 = somevalue5; param6 = somevalue6 ...等...

对于某些查询,我们有很多参数,缓存键长度为几百个字符.

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

BC.*_*BC. 22

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

你没有什么可担心的.

  • .NET使用散列算法将任何字符串转换为单个整数(有点像MD5,但散列适合4个字节).可能选择该算法用于速度和唯一性的平衡,但是发生散列冲突.字典自动处理这些碰撞.有关具体细节,请查看维基百科中的哈希表条目:http://en.wikipedia.org/wiki/Hash_table (5认同)