前言
LevelDB 是一种Key-Value存储数据库 性能非常强悍 百度百科上介绍 可以支撑十亿级 这段时间在研究区块链的时候发现的这个数据库
引入 SDK
<dependency> <groupId>org.iq80.leveldb</groupId> <artifactId>leveldb-api</artifactId> <version>0.10</version> </dependency> <dependency> <groupId>org.iq80.leveldb</groupId> <artifactId>leveldb</artifactId> <version>0.10</version> </dependency>
初始化 DB
DBFactory factory = new Iq80DBFactory(); Options options = new Options(); options.createIfMissing(true); //folder 是db存储目录 DB db = factory.open(new File(folder), options);
存储 Key Value 值
//levelDB 的api存储都是字节数组 所以这里需要转成字节数组 db.put(Iq80DBFactory.bytes(key), Iq80DBFactory.bytes(value));
获取 Value
byte[] bytes = db.get(Iq80DBFactory.bytes(key)); String value = Iq80DBFactory.asString(bytes);
删除 | 更改
//删除 db.delete(Iq80DBFactory.bytes(key)); //更改 重新put新的key - value即可 db.put(Iq80DBFactory.bytes(key), Iq80DBFactory.bytes(value));
遍历所有数据
public LinkedHashMap<String, String> iteratorDb() { DBIterator iterator = db.iterator(); LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<>(); while (iterator.hasNext()) { Map.Entry<byte[], byte[]> next = iterator.next(); String key = Iq80DBFactory.asString(next.getKey()); String value = Iq80DBFactory.asString(next.getValue()); linkedHashMap.put(key, value); } return linkedHashMap; }
测试插入一百万条数据
基于 SpringBoot 搭建的控制器
随机生成 指定数量的 UUID 并且插入到 LevelDB
从请求 到响应 5.5 秒左右 如果再抛掉生成 UUID 的时间 可能更快 哈哈
@ResponseBody @GetMapping("/generate") public ResponeEntity generate(Long count) { DB db = levelDb.getDb(); //创建批量处理 WriteBatch batch = db.createWriteBatch(); for (int i = 0; i < count; i++) { String uuid = UUID.randomUUID().toString(); batch.put(Iq80DBFactory.bytes(uuid), Iq80DBFactory.bytes(uuid)); } //执行写入 db.write(batch); return buildRespone(null); }
测试从一百万数据中取出一条
PostMan 请求到响应时间 19 毫秒
@ResponseBody @GetMapping("/getLevel") public ResponeEntity getLevel(String key) { byte[] bytes = db.get(Iq80DBFactory.bytes(key)); String value = Iq80DBFactory.asString(bytes); return buildRespone(value); }
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于