C ++内存中键值存储

时间:2010-06-26 04:02:47

标签: c++ key-value in-memory

我正在寻找有关内存键值存储引擎或库的建议,它们具有C ++接口或用C ++编写。

我正在寻找能够毫不费力地扩展到大约100,000个键值对并且在linux和win32 / 64上兼容/可编译的解决方案

7 个答案:

答案 0 :(得分:9)

答案 1 :(得分:5)

如果你真的需要在内存中存储这么多对,请考虑这个Sparse Hash。它具有特殊的实现,针对低内存消耗进行了优化。

答案 2 :(得分:3)

std :: map很好,因为键和值的大小很小,可用内存很大(大约1亿对)。 如果不是这种情况,并且您希望在键值对上运行程序,请考虑使用标准的MapReduce API。 Map Reduce专门用于分布式系统并处理大数据,特别是键值对。还有适用于Map Reduce的很好的C ++ API。 http://en.wikipedia.org/wiki/MapReduce

答案 3 :(得分:2)

尝试Tokyo Cabinet,它支持哈希表和B +树:

http://1978th.net/tokyocabinet/

答案 4 :(得分:1)

尝试FastDB,虽然你可能得到的比你要求的要多。东京内阁似乎也支持内存数据库。 (或者,由mmap映射的文件支持。对于现代操作系统,“in-ram”数据库和mmap之间没有太大区别,因为操作系统缓存也使后者非常高效。)

答案 5 :(得分:1)

哈希映射(也称为无序映射)是许多对的最佳选择。您可以在Boost和TR1中找到实现。

编辑: 有些人质疑尺寸 - 如果他有一台64位服务器,那么就有足够的空间容纳1亿千伏的服务器。

答案 6 :(得分:-1)

Oracle Berkeley Db就是您所需要的。