在 Java 中存储内存中键值存储快照的有效方法是什么?

What is a efficient way of storing snapshots of an in-memory key-value store in Java?

我正在尝试设计一个内存中的键值存储,将字符串映射到可变长度的字符串。我还想让它能够在任何特定时刻及时拍摄其键值数据集的快照。此外,对键值存储的修改不应影响过去的快照。我目前为此使用 HashMap,对于快照,我维护一个时间戳映射到相应 HashMap 条目集的深度副本(使用简单的字符串压缩)。在内存中执行此操作还有其他更有效的方法吗?

我想知道,因为我正在处理字符串,所以使用 tries 是否可能更节省内存?

有意思。一项小小的研究表明,Ctrie 可能就是您要找的东西。维基:https://en.wikipedia.org/wiki/Ctrie

ctrie:具有高效非阻塞快照的并发尝试

看起来有多种语言的代码 java haskell python C++

找到相关的: Creating a ConcurrentHashMap that supports "snapshots"

并搜索 Whosebug:https://whosebug.com/search?q=ctrie