why even pay the cost of memory mapping if its a transient embedded cache not shared between servers?
just use a std::unordered_map, or better yet a tbb::concurrent_unordered_map or whatever the equivalent is for your language
just use a std::unordered_map, or better yet a tbb::concurrent_unordered_map or whatever the equivalent is for your language
Practically speaking, Boost.Interprocess includes a shared memory hash table implementation. Boost Multi Index, which is a further generalisation of containers to allow the construction of database-like indexes, is also Interprocess compatible.
http://www.boost.org/doc/libs/1_57_0/doc/html/interprocess/a...
Another reason to cache to disk is that you want to store more data than you have ram.