我有大型 C++/STL 数据结构 (myStructType),其中包含叠层列表和映射。我有很多这种类型的对象,我想用一个键进行 LRU 缓存。我可以在需要时从磁盘重新加载对象。此外,它必须在运行在 BSD 平台上的多处理高性能应用程序中共享。
我可以看到几个解决方案:
- 我可以考虑一个生命周期排序列表,
pair<size_t lifeTime, myStructType v>
加上一个映射到 o(1) 从它的键访问列表中所需对象的索引,我可以使用 shm 和 mmap 来存储所有内容,并使用一个锁来管理访问(cf在这里)。 - 我可以使用为 LRU 配置的 redis 服务器,并将我的数据结构重新设计为 redis 键/值和键/列表对。
- 我可以使用为 LRU 配置的 redis 服务器,并将我的数据结构 (myStructType) 序列化为使用 redis 管理的简单键/值。
当然可能还有其他解决方案。您将如何做到这一点,或者更好的是,您如何成功地做到这一点,同时牢记高性能?
另外,我想避免像 Boost 这样的重度依赖。