0

我正在设计一个 Web API,它需要对大型数据集进行快速只读访问,希望这些数据集可以不断存储并准备好访问。访问将来自一个静态类,该类只会对数据进行一些超快速的查找。

所以,我想预先缓存 a Dictionary<string,Dictionary<string,Dictionary<string,myclass>>>,第三级字典中的元素总数约为 100 万,最终会增加,但可以说永远不会超过 200 万。'myclass' 是一个小类,有一个(小)字符串列表、一个整数、一个枚举和几个布尔值,所以没什么大不了的。它的内存应该超过 100mb。

据我所知,要做到这一点,只需调用我的 StaticClass.Load() 方法,从 Global.asax 中带有 Application_Start 事件的文件中读取所有这些数据。

我想知道我需要考虑/担心什么。我猜这不仅仅是调用 Load() 然后假设未来访问一切正常。即使 API 几个小时都没有命中,GC 会知道将数据留在那里吗?

更复杂的是,我还想每天重新加载这些数据。我想我只能扔掉旧的数据集并从另一个文件中加载新的数据集,但我稍后会谈到。

干杯

4

3 回答 3

0

请参阅我的类似问题IIS6 ASP.NET 2.0 应用程序缓存 - 大量数据的数据存储选项和性能,但特别是 Marc 的回答和他关于大型缓存选项的最后一段,我认为这将适用于您的情况。

于 2011-08-08T06:50:13.323 回答
0

干杯伙计们

我还发现这篇文章解决了这些选项:http ://www.asp.net/data-access/tutorials/caching-data-at-application-startup-cs

没有什么能真正为大量数据提供建议 - 或者甚至被定义为“大量”。我会继续研究,但 Redis 看起来不错

于 2011-08-10T04:04:54.587 回答
0

标准 ASP.net应用程序缓存在这里可以为您工作。看看这篇文章。有了这个,您可以内置依赖关系(文件更改)或基于时间的到期管理。链接的文章显示了一个 On_start 应用程序

我关心的是你想要缓存的大小。

于 2011-08-08T05:54:12.083 回答