是否有一种简单的方法来获得文件支持的 map ?
map 内容定期更新,有删减的,也有新增的。为了保证 map 中数据的安全,需要持久性。我知道数据库是理想的,但遗憾的是,由于限制,无法使用数据库。
我试过:
每次更新时将 map 的全部内容写入文件。这行得通,但显然有一个缺点,即每次都会重写整个文件, map 的内容预计从几个条目到 ~2000 不等。还有一些并发问题(即乱写会导致数据丢失)。
使用 RandomAccessFile并保留指向每个文件的起始字节的指针,以便可以使用 seek() 查找每个条目。这再次与以前有类似的问题,更改条目将涉及更新它之后的所有引用。
理想情况下,该解决方案将涉及某种缓存,以便只有最近访问的条目保留在内存中。
有这样的事吗?还是可以通过第三方 jar 获得?有人建议使用 Oracle Coherence,但我似乎找不到太多关于如何实现它的信息,而且它似乎有点像用大锤敲螺母。
最佳答案
你可以看看MapDB这是出于这个目的而创建的。
MapDB provides concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory. It is a fast and easy to use embedded Java database engine.
关于java - 文件支持的 Java 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17507250/