网站首页 > 精选文章 正文
软件中有数据需要落盘的场景,下次重启后继续处理。
MapDB 是一个轻量级的本地缓存的框架,既可以使用堆外存储,也可以使用磁盘存储。其提供了大量的优化,能够直接替代原生的 Map、Set 等数据结构,提供不受 GC 影响,多级缓存,乃至于带有事务的 RDBMs 存储,提供了优秀的数据结构存储替代。是 jankotek 在 Github 上开源的嵌入式 Java 数据库引擎.
MapDB 提供了基于磁盘或者堆外存储的并发的 Maps、Sets、Lists、Queues 等实现,组合了嵌入式数据库引擎和 Java collections。
MapDB 能够被用于多种场景:
1.提供针对于 Maps, Lists, Queues 和其他 collections 的直接替代
2.提供不收 GC 垃圾回收影响的堆外数据结构存储
3.提供多层级的缓存,带有过期机制和溢出硬盘落地
4.提供 RDBMs 替代,带有事务、MVCC、增量备份等
5.提供本地数据处理和筛选,能够在有限的时间内处理巨量数据
代码示例:
1.内存db
DB db=DBMaker.memoryDB().make();
ConcurrentMap map = db.HashMap("map").createOrOpen(); map.put("something", "here");
2.文件db
DBdb=DBMaker.fileDB("file.db").make();
ConcurrentMap map= db.hashMap("map").createOrOpen(); map.put("something","here"); db.close();
3.内存映射文件
DB db = DBMaker .fileDB("file.db") .fileMmapEnable() .make(); ConcurrentMap<String,Long> map = db .hashMap("map", Serializer.STRING, Serializer.LONG) .createOrOpen(); map.put("something", 111L); db.close();
4.提交&回滚
ConcurrentNavigableMap<Integer,String> map = db.treeMap("collectionName", Serializer.INTEGER, Serializer.STRING)
.createOrOpen();
map.put(1,"one");
map.put(2,"two");
//map.keySet() is now [1,2] even before commit
db.commit(); //persist changes into disk
map.put(3,"three");
//map.keySet() is now [1,2,3]
db.rollback(); //revert recent changes
//map.keySet() is now [1,2]
db.close();
HTreeMap:提供了 HashMap 和 HashSet 在 MapDB 中的实现,线程安全且支持过期机制
BTreeMap:提供了 TreeMap 和 TreeSet 在 MapDB 中的实现,基于无锁的并发 B-链树
SortedTableMap:把键值存储在固定大小的表中,并使用二分查找查询
经典数据结构
HTreeMap:提供了 HashMap 和 HashSet 在 MapDB 中的实现,线程安全且支持过期机制
BTreeMap:提供了 TreeMap 和 TreeSet 在 MapDB 中的实现,基于无锁的并发 B-链树
SortedTableMap:把键值存储在固定大小的表中,并使用二分查找查询
- 上一篇: map的常用用法详解
- 下一篇: js 如何定义map及赋值
猜你喜欢
- 2024-12-23 JavaScript数组之map、filter、reduce使用详解
- 2024-12-23 通俗易懂的说mapreduce
- 2024-12-23 Javascript中,forEach和map到底有什么区别?
- 2024-12-23 Go 每日一库之 mapstructure
- 2024-12-23 python的map函数
- 2024-12-23 golang常用数据结构之map详细讲解
- 2024-12-23 C++的map用法
- 2024-12-23 java的map是什么_java中的map是什么
- 2024-12-23 java如何对map进行排序详解(map集合的使用)
- 2024-12-23 js 如何定义map及赋值
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)