C# IIS6 ASP.NET 2.0应用程序缓存-大量数据的数据存储选项和性能

C# IIS6 ASP.NET 2.0应用程序缓存-大量数据的数据存储选项和性能,c#,asp.net,caching,iis-6,C#,Asp.net,Caching,Iis 6,在IIS6上的ASP.NET 2.0站点中,我希望在应用程序缓存中存储键/值对。每个键始终是一个长度为5个字符的字符串,每个值都是一个长度为15-250个字符的字符串 使用场景是,每个网页请求都会查询一次缓存,如果该键存在,则使用该值,否则将查询数据库,并向缓存中添加新的键/值,或者根据某些应用程序逻辑替换现有条目 在这个场景中,我设想/要求缓存大小达到大约1000个条目,在这个大小下它将变得稳定,并且很少(如果有)像上面所描述的那样改变 在我开始“自己进行性能测试”之前,是否有人有过大量缓存数

IIS6上的ASP.NET 2.0站点中,我希望在应用程序缓存中存储键/值对。每个键始终是一个长度为5个字符的字符串,每个值都是一个长度为15-250个字符的字符串

使用场景是,每个网页请求都会查询一次缓存,如果该键存在,则使用该值,否则将查询数据库,并向缓存中添加新的键/值,或者根据某些应用程序逻辑替换现有条目

在这个场景中,我设想/要求缓存大小达到大约1000个条目,在这个大小下它将变得稳定,并且很少(如果有)像上面所描述的那样改变

在我开始“自己进行性能测试”之前,是否有人有过大量缓存数据的经验,知道性能是否更适合于:

(1) 使用1个包含
SortedDictionary

(2) 允许创建1000个缓存对象,并将缓存本身用作字典或

(3) 这与所讨论的数据量无关。在那种情况下,如果条目数量增加到10000或100000,您的答案会改变吗


非常感谢。

1000不是大量的数据;这很好,但如果在请求之间共享此数据,则需要考虑同步。实际上,使用
来访问
字典
可能很好,不过如果需要,可以更细粒度

但是,内置的web缓存(
HttpContext.cache
)也会处理同样的问题,并且内置了所有线程安全性

不要使用
SortedDictionary
,除非您注意数据的排序。我想你不会的

随着数字越来越大,我更倾向于考虑像redis/memcached这样的存储,使用本地内存作为本地快捷方式