Disk-backedDictionary/Cacheforc#我正在寻找一种缓存大量数据的解决方案。相关问题,但对于不同的语言:不同术语的问题:我不需要(或不想支付任何费用)持久性、事务、线程安全等,并且想使用比列表或字典更复杂的东西。如果我必须编写代码,我会将所有内容保存为临时目录中的文件:stringGet(inti){File.ReadAllText(Path.Combine(root,i.ToString()));}在我的例子中,索引将是一个int(它们应该是连续的或足够接近的)并且数据将是一个字符串,所以我可以放弃处理POD而宁愿超轻并这样做。用法是我有一系列3k文件(比如file#1to#3000),totally650MB,needstodoneforeachstepinthesequence.我希望总数大致相同或更多,我不想将所有内容都保留在内存中(可能会出现更大的情况我无法实现的地方)。许多人针对我的问题提出了不同的解决方案。但是似乎没有人针对我的小众市场。我正在考虑磁盘支持缓存的原因是因为我希望我当前的使用情况会耗尽我的可用地址空间1/3到1/2。我担心用大的情况会用完空间。我不担心踩踏、持久性或重复。我正在寻找的是最少的代码,最小的使用足迹、最小的内存开销和最小的复杂性最小的解决方案。我开始觉得自己过于乐观了。您真正想要的是B树。这是数据库使用的主要数据结构。它旨在让您能够根据需要高效地将部分数据结构移动到磁盘上进行交换。我不知道有任何广泛使用的C#高质量独立B树实现。然而,一种简单的方法是使用SqlCompact数据库。SqlCompact引擎将在进程内运行,因此您不需要运行单独的服务……它会给您一个b树,但不会让人头疼。您可以使用SQL访问数据。免责声明-我将向您介绍我参与的产品。我仍在网站方面工作,所以没有太多信息,但SerialKiller将是完美的选择。我有使用.Net序列化的示例(可以提供示例),因此为.Net可序列化对象编写持久映射缓存是微不足道的。够无耻的自我推销-如果有兴趣,请使用网站上的联系链接。这与我的问题非常相似LookingforasimplestandalonepersistentdictionaryimplementationinC#我不认为库完全符合您的需求,也许是时候在github上创建一个新项目了。下面是.net的B-Tree实现:http://bplusdotnet.sourceforge.net/您可以将MS应用程序块与基于磁盘的缓存解决方案一起使用尝试在此处查看NCache。我不隶属于这家公司。我刚刚下载并测试了他们的免费快速版。我已将EhCacheJava应用程序部分弹出到.NET。分布式缓存尚未实现,但在单个节点上,所有原始单元测试都通过了。完全开源:http://sourceforge.net/projects/thecache/如果需要,我可以创建二进制删除(目前仅提供源代码)我将采用嵌入式数据库路线(SQLite、Firebird),但这里有一些其他选项:我推荐MS企业库中的缓存应用程序块。这也是建议的,但链接指向企业库的数据访问部分中的一篇文章。这是缓存应用程序块的链接:http://msdn.microsoft.com/en-us/library/cc309502.aspx具体来说,您需要创建一个新的后备存储(如果不持久存储到磁盘):http://msdn.microsoft.com/en-us/library/cc309121.aspx鉴于你最近对这个问题的编辑,我建议你实施你的问题中提到的解决方案,因为你不太可能在图书馆中找到这样一个天真的解决方案你的再利用。以上就是C#学习教程:c#盘支持字典/缓存共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
