dxKeyValueDB
1. 概述
此模块是 dejaOS 官方系统模块库的一部分,旨在提供高性能键值数据库服务。基于 LMDB(Lightning Memory-Mapped Database)构建,提供简单易用的键值存储功能。适用于需要快速读写操作和轻量级数据存储的场景,可以在某些用例中替代 SQLite。
包含常见的键值数据库功能:
- 键值对的 CRUD 操作
- 支持多种数据类型(字符串、数字、布尔值、数组、对象)
- 所有键的分页查询
- 基于前缀的过滤
- 异步写入操作,同步读取操作
- 线程安全设计
2. 文件
- dxKeyValueDB.js(主接口文件)
- kvdbWorker.js(工作线程文件)
- libvbar-m-dxkeyvaluedb.so(嵌入 LMDB 的 C 扩展)
确保这 3 个文件包含在项目根目录下的 dxmodules 子目录中
3. 依赖项
- dxMap.js(用于线程间数据共享)
- dxEventBus.js(用于事件通信)
- dxStd.js(用于路径操作)
- dxLogger.js(用于日志记录)
4. 兼容设备
兼容所有运行 dejaOS v2.0+ 的设备
5. 使用方法
初始化
import db from "../dxmodules/dxKeyValueDB.js";
// 初始化数据库,应在主线程中只调用一次
db.init("/app/data", 10); // path: /app/data, size: 10MB
数据操作
// 设置键值对(异步操作,立即返回)
db.set("user:id1", { name: "user1", age: 10 });
db.set("user:id2", "user2");
db.set("user:id3", 34);
db.set("user:id4", 34.5);
db.set("config:settings", [1, 2, 3]);
// 获取值(同步操作)
let user1 = db.get("user:id1"); // 返回: {name: 'user1', age: 10}
let user2 = db.get("user:id2"); // 返回: "user2"
let user3 = db.get("user:id3"); // 返回: 34
// 删除键值对(异步操作,立即返回)
db.del("user:id2");