2011-10-12 22 views
0

我需要一个应该在进程中运行的简单(LRU)缓存。我发现memcached,这看起来不错,但似乎并没有一个简单的方法来处理它的进程。我不需要分布式缓存,只需一个简单的键/值存储和某种LRU行为以及一些很好的分配器来限制碎片,因为条目大小差异很大(几个字节 - 几千字节)。必须确保这种事情的现有实施?应该是C或C++。简单的C/C++进程内缓存类似于memcached

+0

这可能帮助:HTTP://计算器.com/questions/6668824/caching-huge-data-in-process-memory – 2011-10-12 06:49:29

回答

3

我不喜欢这样回答,但实现起来会相当简单。

  1. Allocator。使用mallocfree。他们工作,他们工作得很好。这也使得与其他程序的交互更加容易。

  2. 互斥体 - >散列表,树或特里结构。您可以使用链表来跟踪LRU。不要尝试做无花果无锁的东西。

重量应该少于几百行,在一个很好的日子里敲出来。

+0

哇,我很惊讶这被接受了。我并不乐观。 –

+0

我不相信很快会有更好的答案;是的,简单的手写LRU现在可以工作。尽管我仍然很好奇听到更好的关键/价值商店;) – Anteru

0

我已经使用成功commoncache但该项目并没有出现有我的同事提出的(补丁)的任何活动和问题依然没有得到解决......