我正在设计一个 Web API,它需要对大型数据集进行快速只读访问,希望这些数据集可以不断存储并准备好访问。访问将来自一个静态类,该类只会对数据进行一些超快速的查找。
所以,我想预先缓存 a Dictionary<string,Dictionary<string,Dictionary<string,myclass>>>
,第三级字典中的元素总数约为 100 万,最终会增加,但可以说永远不会超过 200 万。'myclass' 是一个小类,有一个(小)字符串列表、一个整数、一个枚举和几个布尔值,所以没什么大不了的。它的内存应该超过 100mb。
据我所知,要做到这一点,只需调用我的 StaticClass.Load() 方法,从 Global.asax 中带有 Application_Start 事件的文件中读取所有这些数据。
我想知道我需要考虑/担心什么。我猜这不仅仅是调用 Load() 然后假设未来访问一切正常。即使 API 几个小时都没有命中,GC 会知道将数据留在那里吗?
更复杂的是,我还想每天重新加载这些数据。我想我只能扔掉旧的数据集并从另一个文件中加载新的数据集,但我稍后会谈到。
干杯