Home > node-tokyocabinet

node-tokyocabinet

Node-tokyocabinet is a project mainly written in C++ and JAVASCRIPT, it's free.

Tokyo Cabinet binding for Node.js

= Introduction Tokyo Cabinet binding for Node.js. So far only implemented interfaces defined in tokyocabinet.idl.

= Install

  • Install node.js http://github.com/ry/node
  • Install Tokyo Cabinet http://1978th.net/tokyocabinet/
  • Download node-tokyocabinet and do;

    $ node-waf configure build

= Warning

THIS SOFTWARE IS STILL AN ALPHA VERSION.

= Sync vs. Async

Sync interface (not recommended because we are using Node.js!).

var hdb = new HDB; // open database var success = hdb.open('casket.tch', HDB.OWRITER | HDB.OCREAT); if (!success) throw hdb.errmsg(); // store a value var success = hdb.put('foo', 'bar'); if (!success) throw hdb.errmsg(); // retrieve a value var v = hdb.get('foo'); // => 'bar' if (v === null) throw hdb.errmsg(); sys.puts(v);

Async interface.

var hdb = new HDB; // 'setmutex' makes database multi-thread safe hdb.setmutex(); // open database hdb.openAsync('casket.tch', HDB.OWRITER | HDB.OCREAT, function(err){ if (err) throw hdb.errmsg(err); // store a value hdb.putAsync('foo', 'bar', function(err){ if (err) throw hdb.errmsg(err); // retrieve a value hdb.get('foo', function(err, val){ if (err) throw hdb.errmsg(err); sys.puts(val); }); }); }); hdb.put('foo', 'bar'); var v = hdb.get('foo'); // => 'bar'

As you can see, it's very cumbersome to write with Async APIs. I'm planning to write the Async wrapper API to make it easy to use. Or you can wrap with your preferred library (Promise, Deferred, Do, etc.)

= ToDo

  • Write async wrapper.
  • More tests.

= License The MIT License Copyright (c) 2010 Atsushi Takayama <taka.atsushi (a) gmail.com>

Previous:RIAB