MinDB:國內高中生的開源JavaScript資料庫專案

JeOam發表於2013-12-10

請輸入圖片描述
讓你可以在 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">

通過 Node.jsnpm 安裝:

$ npm install min

如果你正在使用 SeaJS,你可以通過 spm 進行安裝:

$ spm install iwillwen/min

如果你喜歡 component,你也可以使用它進行安裝:

$ component install iwillwen/mindb

或者 bower?:

$ bower install mindb

基本使用方法

基本的鍵值儲存可以通過SETGET等命令操作:

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 文件.


更多資訊,可以閱讀其專案的說明

相關文章