我们有一个 ASP.NET 4.0 应用程序,它从数据库中提取一个复杂的数据结构,该结构需要 12 多个小时才能推送到内存中的数据结构(后来存储在 HttpRuntime.Cache 中)。数据结构的大小正在迅速增加,如果应用程序重新启动,我们不能继续等待 12 多个小时才能将其放入内存。如果您要更改 web.config 或导致重新启动的 Web 应用程序中的任何代码,这是一个主要问题 - 这意味着在应用程序可以使用之前等待很长时间,并阻碍开发或更新部署。
数据结构必须在内存中以使网站可用的速度工作。与 HttpRuntime.Cache 相比,在内存数据库(如 memcache 或 Redis)中,速度较慢,并且在我们的情况下不起作用(在内存中,数据库必须序列化 put/get,而且它们不能相互引用,它们使用作为查找的键- 性能下降,加上大量键,性能迅速下降)。性能在这里是必须的。
我们想做的是在应用程序结束之前(在重新启动时)快速将 HttpRuntime.Cache 转储到磁盘,并能够在应用程序再次启动时立即将其加载回来(希望在几分钟内而不是 12 小时或几天内) .
内存结构约为 50GB。
有针对这个的解决方法吗?