我正在寻找有关内存键值存储引擎或库的建议,它们具有C ++接口或用C ++编写。
我正在寻找能够毫不费力地扩展到大约100,000个键值对并且在linux和win32 / 64上兼容/可编译的解决方案
答案 0 :(得分:9)
std::map
怎么样?
http://cplusplus.com/reference/stl/map/
答案 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 +树:
答案 4 :(得分:1)
尝试FastDB,虽然你可能得到的比你要求的要多。东京内阁似乎也支持内存数据库。 (或者,由mmap映射的文件支持。对于现代操作系统,“in-ram”数据库和mmap之间没有太大区别,因为操作系统缓存也使后者非常高效。)
答案 5 :(得分:1)
哈希映射(也称为无序映射)是许多对的最佳选择。您可以在Boost和TR1中找到实现。
编辑: 有些人质疑尺寸 - 如果他有一台64位服务器,那么就有足够的空间容纳1亿千伏的服务器。
答案 6 :(得分:-1)
Oracle Berkeley Db就是您所需要的。