讓你可以在 JavaScript 中對你的應用資料進行儲存和操作。
MinDB 提供一個標準的儲存介面(Store Interface
)和 Redis 風格的 API,你可以在任何 JavaScript 環境中使用。
它在 Github 上的專案主頁是:https://github.com/iwillwen/mindb
據專案作者的微博資料, 他是廣州石門中學的高中生,1996年出生。(編輯不得不注:後生可畏!!)
安裝
普通script
標籤引入:
<script style="text/javascript" src="/path/to/script/min.js">
$ npm install min
$ spm install iwillwen/min
如果你喜歡 component,你也可以使用它進行安裝:
$ component install iwillwen/mindb
或者 bower?:
$ bower install mindb
基本使用方法
基本的鍵值儲存可以通過SET
、GET
等命令操作:
min.set('foo', 'bar', function(err) {
if (err) {
return console.error(err);
}
min.get('foo', function(err, value) {
if (err) {
return console.error(err);
}
console.log(value); //=> bar
});
});
基本方法
-
set
對指定鍵設定資料(key, value[, callback])
-
setnx
當指定鍵不存在時,對其設定資料(key, value[, callback])
-
setex
對指定鍵設定資料,並設定生命週期(key, seconds, value[, callback])
-
psetex
對指定鍵設定資料,並設定以毫秒為單位的生命週期(key, millseconds, value[, callback])
-
mset
批量對指定鍵設定資料(plainObject[, callback])
-
msetnx
當一批指定鍵全部不存在時,批量對其設定資料(plainObject[, callback])
-
append
在指定鍵後插入值(key, value[, callback])
-
get
獲取指定鍵的值(key[, callback])
-
mget
批量獲取指定鍵的值(keys[, callback])
-
getset
對指定鍵設定資料並返回其之前的值(key, value[, callback])
-
strlen
獲取指定鍵值的長度(key[, callback])
-
incr
將指定鍵中儲存的數字值增一(key[, callback])
-
incrby
將指定鍵中儲存的數字值增加若干量(key, increment[, callback])
-
incrbyfloat
將指定鍵中儲存的浮點值增加若干量(key, increment[, callback])
Hash, List, Set, Sorted Set
你或許可以在 Redis 的官方網站中得到啟示。
語法糖(Syntactic sugar)
不喜歡巢狀回撥?你或許會喜歡 Promise:
min.incr('user_id')
.then(function(curr) {
return min.hmset('user-' + curr, {
name: 'Will Wen Gunn',
id: 'iwillwen',
email: 'willwengunn@gmail.com'
});
})
.then(function(key) {
var id = key.substr(5);
return min.sadd('user-msg-' + id, 'WelCome!');
})
.then(function(length) {
// ...
})
.fail(function(err) {
console.log(err);
});
還不行?不需要依賴?那麼來看看MULTI
吧:
min.multi()
.incr('msg-seq')
.incr('msg-seq')
.incr('msg-seq')
.exec(function(err, results) {
if (err) {
return console.error(err);
}
console.log(results); //=> [ [ 1 ], [ 2 ], [ 3 ] ]
});
MinDB 也支援多資料庫:
var Min = min.fork();
Min.set('foo', 'bar')
.then(/*...*/)
.fail(/*...*/);
Store Interface
請閱讀 Store Interface 文件.
更多資訊,可以閱讀其專案的說明。