【发布时间】:2010-09-29 08:00:53
【问题描述】:
我正在寻找一种用于缓存大量数据的解决方案。
相关问题,但针对不同的语言:
用不同的术语结束问题:
我不需要(或不想为此支付任何费用)持久性、事务、线程安全等,并且想要使用不比 List 或 Dictionary 复杂多少的东西。
如果我必须编写代码,我会将所有内容保存为临时目录中的文件:
string Get(int i)
{
File.ReadAllText(Path.Combine(root,i.ToString());
}
在我的情况下,索引将是 int(它们应该是连续的或足够接近),数据将是 string,所以我可以同时处理 POD 并且宁愿超-light 并做到这一点。
用法是我有一个 3k 文件序列(如文件 #1 到 #3000),总计 650MB,需要为序列中的每个步骤做一个差异。我希望总数大致相同或更多,并且我不想将所有这些都保留在内存中(我无法做到的情况下可能会出现更大的情况)。
许多人针对我的问题提出了不同的解决方案。然而,似乎没有一个针对我的小利基。我正在查看磁盘支持缓存的原因是因为我预计我当前的使用将占用我可用地址空间的 1/3 到 1/2。我担心更大的箱子会完全耗尽空间。我不担心踩踏、持久性或复制。我正在寻找的是使用最少代码、最少占用空间、最少内存开销和最低复杂性的最小解决方案。
我开始认为我过于乐观了。
【问题讨论】:
-
为什么不是文件系统?这就是为...设计的......
-
如果有人不能指出我已经写好的更好的东西,我会的。
-
基于磁盘的缓存不是破坏了缓存机制的全部目的吗?
-
取决于数据的来源。如果它要记住昂贵的计算值或通过缓慢的 Internet 链接传来的数据,那可能就更合理了。
-
我刚刚遇到了类似的问题...仍在寻找解决方案
标签: c# caching disk-based