C++ in-memory Key-Value stores

白昼怎懂夜的黑 提交于 2019-12-04 13:46:17

问题


I'm looking for suggestions regarding in-memory key-value store engines or libraries, that have C++ interfaces or that are written in C++.

I'm looking for solutions that can scale without any problems to about 100mill key-value pairs and that are compatible/compilable on linux and win32/64


回答1:


How about std::map?
http://cplusplus.com/reference/stl/map/




回答2:


If you really need to store such amount of pairs in memory consider this Sparse Hash. It has special implementation which is optimized for low memory consumption.




回答3:


std::map is fine given that size of key and value is small and the available memory is large ( for about 100million pairs). If its not the case, and you want to run a program over the key-value pairs, consider using a standard MapReduce API. Map Reduce is specifically meant to be used on distributed systems and process large data specially key-value pairs. Also there are nice C++ APIs for Map Reduce. http://en.wikipedia.org/wiki/MapReduce




回答4:


Try Tokyo Cabinet, it supports hashtables and B+trees:

http://1978th.net/tokyocabinet/




回答5:


Try FastDB, though you may get more than you ask for. Tokyo cabinet also seems to support in-memory databases. (Or, backed by file mapped by mmap. With modern operating systems, there's no much difference between "in-ram" database and something mmap'd as the OS caching makes also the latter very efficient).




回答6:


A hash map (also called unordered map) is the best bet for that many pairs. You can find an implementation in Boost and TR1.

Edit: Some people have questioned the size- if he's got, say, a 64bit server, there's plenty of space for 100million kv pairs.




回答7:


Oracle Berkeley_db is what you need.



来源:https://stackoverflow.com/questions/3122652/c-in-memory-key-value-stores

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!