我创建了一个ASP .Net MVC 3应用程序,允许用户根据文件名搜索各种媒体文件。有大量的这些文件,所以我创建了一个倒置的索引,我存储在内存中。具体来说,我将其描述为
Dictionary<string,List<string>>.
嗯,必须首先创建此索引才能进行搜索,因此我创建了一个构建它的方法。它工作正常,一切都很好,但自然每次AppPool刷新时,我的索引都会丢失。我已经尝试关闭AppPool回收,但我认为这是一个坏主意(并且它似乎无论如何回收)。
我基本上不确定我的下一步应该是什么。有没有办法检测AppPool何时刷新并重建我的索引?或者完全禁用应用程序池回收是否安全?
干杯, -Josh
答案 0 :(得分:3)
在我看来,这不是一个理想的解决方案(即使你像我一样对数据进行加密),但是工作正是如此。希望这可以帮助其他人寻找类似的解决方案,或者有人可能偶然发现并指出在应用程序池回收后实际发生的事件。我当然有兴趣了解那个。
答案 1 :(得分:2)
假设索引可用,我原以为你可以在Application_disposed上序列化索引,然后在全局asax的application_start事件中对其进行反序列化?
答案 2 :(得分:0)
如果您需要持久性键/值存储,我建议使用Redis之类的东西。我在极高容量环境中使用该产品取得了很大成功(一小时内超过5亿次交易)。