Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpRuntime.cache对象中缓存键的最大长度?_C#_Asp.net_Caching_Dictionary - Fatal编程技术网

C# HttpRuntime.cache对象中缓存键的最大长度?

C# HttpRuntime.cache对象中缓存键的最大长度?,c#,asp.net,caching,dictionary,C#,Asp.net,Caching,Dictionary,我们在ASP.NET中使用HttpRuntime.Cache API来缓存从数据库检索到的数据 对于这个特定的应用程序,我们的数据库查询具有许多参数,因此我们的缓存键如下所示: 表=表1;param1=somevalue1;param2=somevalue2;param3=somevalue3;param4=somevalue4;param5=somevalue5;param6=somevalue6。。。等等 对于某些查询,我们有太多的参数,以至于缓存密钥有几百个字符长 我的问题:这些缓存密钥的

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

对于这个特定的应用程序,我们的数据库查询具有许多参数,因此我们的缓存键如下所示:

表=表1;param1=somevalue1;param2=somevalue2;param3=somevalue3;param4=somevalue4;param5=somevalue5;param6=somevalue6。。。等等

对于某些查询,我们有太多的参数,以至于缓存密钥有几百个字符长


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

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


你没什么好担心的。

举个极端的例子。。。假设我的缓存密钥大小为4K。这是一个整数无法存储的信息。那么,如何将其存储为整数并保持唯一性呢?.NET使用哈希算法将任何字符串转换为单个整数(有点像MD5,除了哈希适合4个字节之外)。选择此算法可能是为了平衡速度和唯一性,但会发生哈希冲突。字典会自动处理这些冲突。有关特定详细信息,请查看wikipedia中的哈希表条目: