在 IIS6 上的 ASP.NET 2.0 站点中,我想将键/值对存储在应用程序缓存中。每个键始终是一个长度为 5 个字符的字符串,每个值都是一个长度为 15 - 250 个字符的字符串。
使用场景是每次网页请求都会查询一次缓存,如果 Key 存在则使用 Value 否则查询数据库并向缓存添加新的 Key/Value 或根据某些应用程序逻辑替换现有条目.
在这种情况下,我设想/要求缓存大小达到大约 1000 个条目,在此大小它将变得稳定并且很少(如果有的话)如上所述进行更改。
在我只是“自己进行性能测试”之前,有没有人对大量缓存数据有过关于性能是否更可取的经验:
(1) 使用 1 个包含 SortedDictionary<string, string>
的缓存对象或
(2) 允许创建 1,000 个缓存对象并将缓存本身用作字典或
(3) 所讨论的数据量无关紧要。如果条目数增加到 10,000 或 100,000,在哪种情况下您的答案会改变?
非常感谢。
最佳答案
1000 不是很大的数据量;这将工作正常,但如果此数据在请求之间共享,则您需要考虑同步。实际上是一个 lock
访问 Dictionary<string,string>
可能没问题,但如果需要,您可以更细粒度。
然而,内置的网络缓存 ( HttpContext.Cache
) 也将解决同样的问题,并且内置了所有线程安全。
不要使用 SortedDictionary<,>
除非您关心数据是否已排序。我认为你不会。
随着数字越来越大,我更倾向于考虑像 redis/memcached 这样的存储,将本地内存作为本地快捷方式。
关于c# - IIS6 ASP.NET 2.0 应用程序缓存 - 大量数据的数据存储选项和性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6609802/