node-ssdb

ssdb nodejs/iojs client library,
ssdb is a fast nosql database, an alternative to redis.
v0.3.0 (and higher versions) are not backward-compactiable with old versions(0.2.x).

Please dont send me emails for any questions about node-ssdb, open an issue on GitHub instead, thanks!
Ports
Supported Engines
- node.js >= v0.10.30
- iojs >= 1.0.4
Requirements
Installation
$ npm install ssdb
Example
The traditional Node.js way:
var ssdb = require('ssdb');
var pool = ssdb.createPool();
var conn = pool.acquire();
conn.set('key', 'val', function(err, data) {
if (err) {
throw err;
}
});
Work with tj/co, make it thunkify or promisify:
var co = require('co');
var pool = ssdb.createPool({promisify: true});
var conn = pool.acquire();
co(function *(){
var key = 'key';
var a = yield conn.set(key, 'val');
var b = yield conn.get(key);
console.log(a, b);
}).catch(function(err) {
console.error(err)
});
node-ssdb uses v8 native Promise to implement promisify
, which requires nodejs v0.11.13+
To use bluebird as promise implementation (which
is much faster than v8 native promise):
global.Promise = require('bluebird').Promise;
Callback Parameters
Callback functions have two parameters: error, data
;
- on
status_ok
: only error
is undefined
;
- on
status_not_found
: error
and data
are both undefined
- on
status_error
, status_fail
, status_client_error
: only data
is undefined
.
Error Handling
var ssdb = require('ssdb');
var pool = ssdb.createPool();
pool.acquire().set('key', 'val', function(err, data) {
if (err && err instanceof ssdb.SSDBError)
throw err;
});
Poolling Policies
There are 2 poolling policies avaliable: 'least_conn' and 'round_robin' (the default), e.g.
var pool = ssdb.createPool({policy: ssdb.Pool.policies.least_conn});
API References
createPool(options)
To make a ssdb client:
var ssdb = require('ssdb');
var pool = ssdb.createPool();
options (with default values):
{
host: '0.0.0.0',
port: 8888,
auth: undefined,
authCallback: function(err, data) {if (err) throw err;},
size: 1,
timeout: 0,
promisify: false,
thunkify: false,
policy: Pool.policies.round_robin,
}
Note: auth
requires ssdb v1.7.0.0+
pool.acquire()
Acquire a connection from pool.
pool.destroy()
Close all connections in the pool. (note that if a connection is closed, it will reconnect to ssdb
server automatically if you reuse this conn to send commands, and the same with pool.)
pool.create(options)
Create a new connection and add it to the pool.
command names
ssdb.commands
SSDB API Documentation
Detail docs for ssdb interfaces can be found at: https://github.com/hit9/ssdb.api.docs
FAQ
-
Pipeline?
Node-ssdb pipelines automatically because node.js has async IO, this is different with other
clients in sync IO languages (i.e. Python), node-ssdb always pipelines.
-
Commands & Callbacks ordering ?
On a single connection, the callbacks are run the same order as the commands are sent, TCP guarantees
this: the stream will arrive in the same order as it was sent.
-
Connection Pool?
ssdb is a multiple-threading server, so the connection pool is required. Here are some examples
to use the connection pool:
var conn = pool.acquire();
yield conn.set('key', 'val');
yield conn.get('key');
yield [
pool.acquire().set('key1', 'val1');
pool.acquire().set('key2', 'val2');
];
License
Copyright (c) 2014 Eleme, Inc. detail see LICENSE-MIT