跳到主要内容

leveldb&levelup中文文档简介

· 阅读需 3 分钟
一介布衣
全栈开发者 / 技术写作者
  • 文章目录
  • levelup

  • 支持的平台

  • 使用

  • 新版本支持Promise

  • 事件

  • 安全

  • 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实例也不能够在他们之间共享