网站首页 > 博客文章 正文
软件中有数据需要落盘的场景,下次重启后继续处理。
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:把键值存储在固定大小的表中,并使用二分查找查询
猜你喜欢
- 2024-11-21 JDK 16 即将发布,看完这些新特性,我感觉已经学不动了
- 2024-11-21 面试官:说说缓存最关心的问题?有哪些类型?回收策略和算法?
- 2024-11-21 对比着学 Go 语言-基础:类型之 map
- 2024-11-21 分享一道大厂面试题:有没有比读写锁更快的锁?
- 2024-11-21 高性能缓存设计
- 2024-11-21 美团面试官:有没有比读写锁更快的锁?
- 2024-11-21 恕我直言,牛逼哄哄的MongoDB你可能只会30%
- 2024-11-21 缓存核心知识小抄,面试必备,赶紧收藏
- 2024-11-21 高性能Java缓存体系工具框架介绍
- 2024-11-21 基础知识:旋转机械中的阶次分析
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)