Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
node.js memcached client
JavaScript
branch: bluejack-master

This branch is 2 commits ahead, 7 commits behind master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
test
.gitignore
Makefile
README.md
example.js
index.js
package.json

README.md

node.js memcached client

A pure-JavaScript memcached library for node.

Note: this library is a derivative work of the parent project to support binary values stored in memcache (the original would mangle them with utf8 conversions). It has 2 significant behavoral changes.

  • get returns a Buffer object instead of a String object
  • all errors return proper Javascript Error objects instead of strings

Tests

To run the test suite, first insall expresso, then run make test.

If you have node-jscoverage you can also make test-cov for coverage, but that's pretty nerdy.

Usage

Create a Client object to start working. Host and port can be passed to the constructor or set afterwards. They have sensible defaults.

var memcache = require('./memcache');

var client = new memcache.Client(port, host);
client.port = 11211;
client.host = 'localhost';

The Client object emits 4 important events - connect, close, timeout and error.

client.on('connect', function(){
    // no arguments - we've connected
});

client.on('close', function(){
    // no arguments - connection has been closed
});

client.on('timeout', function(){
    // no arguments - socket timed out
});

client.on('error', function(e){
    // there was an error - exception is 1st argument
});

After connecting, you can start to make requests.

client.get('key', function(error, result){

    // all of the callbacks have two arguments.
    // 'result' may contain things which aren't great, but
    // aren't really errors, like 'NOT_STORED'

});

client.set('key', 'value', function(error, result){

    // lifetime is optional. the default is
    // to never expire (0)

}, lifetime);

client.delete('key', function(error, result){

    // delete a key from cache.
});

client.version(function(error, result)){

    // grab the server version
});

There are all the commands you would expect.

// all of the different "store" operations
// (lifetime & flags are both optional)
client.set(key, value, callback, lifetime, flags);
client.add(key, value, callback, lifetime, flags);
client.replace(key, value, callback, lifetime, flags);
client.append(key, value, callback, lifetime, flags);
client.prepend(key, value, callback, lifetime, flags);
client.cas(key, value, unique, callback, lifetime, flags);

// increment and decrement (named differently to the server commands - for now!)
// (value is optional, defaults to 1)
client.increment('key', value, callback);
client.decrement('key', value, callback);

// statistics. the success argument to the callback
// is a key=>value object
client.stats(callback);
client.stats('settings', callback);
client.stats('items', callback);
client.stats('mongeese', callback);

Once you're done, close the connection.

client.close();

There might be bugs. I'd like to know about them.

I bet you also want to read the memcached protocol doc. It's exciting! It also explains possible error messages.

Something went wrong with that request. Please try again.