繁体   English   中英

缓存在C#中存储字典的最佳方法

[英]Best way to cache store a dictionary in c#

我正在编写类别的导航结构。 每个类别都有一个ID,该ID位于第3方搜索工具中。 无论是在应用启动时,还是在不同的时间间隔中,我都需要获取分类及其ID,并将它们存储在字典中(或以其他方式),以便我可以访问它们以进行从ID到名称的链接重写。

使用类似于以下格式的数据将字典存储在XML文件中,并在需要重写时将其读取

<nodes>
<node id="1">Some Nav Data</node>
</nodes>

然后,您有2个选项,编写一个单独的进程,该进程将以特定的间隔更新文件,或者您当前的进程可以在设置的间隔后更新文件。

如果您认为加载和解析XML是过分的,请考虑将类序列化到包含简单哈希表或字典的磁盘。

您在谈论几个定调子? 为什么需要缓存,而不仅仅是使用带有后台线程的内存字典来定期重新加载它?

如果需要缓存,则可以查看EntLib中的缓存应用程序块 您可以设置一个有效期限,然后处理一个有效期限,以重新填充缓存。 但是坦率地说,这听起来太夸张了。

缓存是一个很大的话题! 如果您在Web项目中,则可以使用本地缓存。 如果您在Windows环境中,则可以使用HttpContext.Current.Cache(尽管您实际上并不需要Windows应用程序中的缓存)。 如果跨多个Web服务器,则可能需要使用MemCached或MemCached Win32的强大功能。 如果您不介意使用新的东西,您还可以看看Velocity(这是MS过去几年在缓存领域对MemCache优越性的回答)。

以下是一些您可能会感兴趣的帖子:

System.Web.Caching与企业库缓存块

使用MS SQL Server运行Asp.net网站-我何时应该担心可扩展性?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM