C# IIS6 ASP.NET 2.0应用程序缓存-大量数据的数据存储选项和性能
在IIS6上的ASP.NET 2.0站点中,我希望在应用程序缓存中存储键/值对。每个键始终是一个长度为5个字符的字符串,每个值都是一个长度为15-250个字符的字符串 使用场景是,每个网页请求都会查询一次缓存,如果该键存在,则使用该值,否则将查询数据库,并向缓存中添加新的键/值,或者根据某些应用程序逻辑替换现有条目 在这个场景中,我设想/要求缓存大小达到大约1000个条目,在这个大小下它将变得稳定,并且很少(如果有)像上面所描述的那样改变 在我开始“自己进行性能测试”之前,是否有人有过大量缓存数据的经验,知道性能是否更适合于: (1) 使用1个包含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个条目,在这个大小下它将变得稳定,并且很少(如果有)像上面所描述的那样改变 在我开始“自己进行性能测试”之前,是否有人有过大量缓存数
SortedDictionary
或
(2) 允许创建1000个缓存对象,并将缓存本身用作字典或
(3) 这与所讨论的数据量无关。在那种情况下,如果条目数量增加到10000或100000,您的答案会改变吗
非常感谢。1000不是大量的数据;这很好,但如果在请求之间共享此数据,则需要考虑同步。实际上,使用
锁
来访问字典
可能很好,不过如果需要,可以更细粒度
但是,内置的web缓存(HttpContext.cache
)也会处理同样的问题,并且内置了所有线程安全性
不要使用SortedDictionary
,除非您注意数据的排序。我想你不会的
随着数字越来越大,我更倾向于考虑像redis/memcached这样的存储,使用本地内存作为本地快捷方式