标签:blog http ar io os 使用 sp for on
LevelDB是google公司开发出来的一款 超高性能kv存储引擎,以其惊人的读性能和更加惊人的写性能在轻量级nosql数据库中鹤立鸡群. 此开源项目目前是支持处理十亿级别规模Key-Value型数据持久性存储的C++ 程序库。在优秀的表现下对于内存的占用也非常小,他的大量数据都直接存储在磁盘上.可以理解为以空间换取时间.
LevelDB 只是一个 C/C++ 编程语言的库, 不包含网络服务封装, 所以无法像一般意义的存储服务器(如 MySQL)那样, 用客户端来连接它, 使用者应该封装自己的网络服务器.
node.js环境下使用需要npm 包 levelUP,levelDown 来支持.
npm install levelUP levelDown
或者你也可以这样npm install level
提醒:levelup 版本最好用0.10.0或者更低版本,最新版本和leveldown编译时出问题. npm 安装指定版本依赖包 所以这样比较安全npm install levelup@0.10.0 leveldown
api定义非常简单.
var levelup = require(‘levelup‘);
var db = levelup(‘./yijiebuyi‘); //这里的路径就是物理存储数据的文件路径,建议不要放到项目中.
下面是常用的获取,设置api (引用自 github node-levelup https://github.com/rvagg/node-levelup)
// put a key & value
db.put(‘name‘, ‘LevelUP‘, function (err) {
if (err) return console.log(‘Ooops!‘, err) // some kind of I/O error
// fetch by key
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)
})
})
一介布衣博客 采用了node.js + leveldb 方式,上面的这个数据库封装类也是一介布衣博客使用的一个通用帮助文件.
//设置
function put(key, value, callback) {
if (key && value) {
db.put(key, value, function (error) {
callback(error);
})
} else {
callback(‘no key or value‘);
}
}
//获取
function get(key, callback) {
if (key) {
db.get(key, function (error, value) {
callback(error, value);
})
} else {
callback(‘no key‘, key);
}
}
//删除
function del(key, callback) {
if (key) {
db.del(key, function (error) {
callback(error);
})
} else {
callback(‘no key‘);
}
}
//批量操作
function batch(arr, callback) {
if (Array.isArray(arr)) {
var batchList = [];
arr.forEach(item)
{
var listMember = {};
if (item.hasOwnProperty(‘type‘)) {
listMember.type = item.type;
}
if (item.hasOwnProperty