leveldb&levelup中文文档简介
文章目录
levelup
LevelDB是一个Google构建的简单的k-v数据库.
在Google Chrome和其他产品中被使用.
LevelDB支持抽象字节数组作为键和值,单一get, put 和delete操作,批处理的put 和delete操作,双向迭代和使用快速Snappy
算法进行简单压缩.
LevelDB存储按照键的字母顺序进行排序的条目.
这种构造levelup的流接口,
奠定了levelup作为可读流的迭代器一个十分有效的查询机制.
leveldown是提供了存C++链接到LevelDB的存储器.
有很多交替存储是可用的,
如在浏览器中的level.js,或者是内存存储的memdown.他们的键和值基本上之处字符串和Buffers类型,
对于更丰富的数据类型集,你可以使用encoding-down来封装该存储.
支持的平台
我们的目的是支持可用的LTS和当前的node.js以及浏览器.
为了支持下面的存储,请查看相应的文档.
使用
首先安装
npm install levelup leveldown
所有操作都是异步的,如果你没有提供回调函数,那么将返回一个Promise
var levelup = require('levelup')
var leveldown = require('leveldown')
// 1) Create our store,创建存储器
var db = levelup(leveldown('./yijiebuyi'))
// 2) Put a key & value,存储键 & 值
db.put('name', 'levelup', function (err) {
if (err) return console.log('Ooops!', err) // some kind of I/O error
// 3) Fetch by key,通过键name获取值levelup
db.get('name', function (err, value) {
if (err) return console.log('Ooops!', err) // likely the key was not found
// Ta da!
console.log('name=' + value)
})
})
新版本支持Promise
每一个接受回调函数的函数,在回调函数被省略时返回promise
- db.get(key[, options])
- db.put(key, value[, options])
- db.del(key[, options])
- db.batch(ops[, options])
- db.batch().write()
返回promise示例:
var db = levelup(leveldown('./yijiebuyi'))
db.put('foo', 'bar')
.then(function () { return db.get('foo') })
.then(function (value) { console.log(value) })
.catch(function (err) { console.error(err) })
也可以用 async/await模式
const main = async () => {
const db = levelup(leveldown('./yiejibuyi'))
await db.put('foo', 'bar')
console.log(await db.get('foo'))
}
事件
安全
像LevelDB的存储器是线程安全的,但是当访问多进程时它是不适用的.
你应该只从单Node.js进程打开该存储.
Node.js集群由多进程组成,所以levelup实例也不能够在他们之间共享