A memcache client for node using the binary protocol and SASL authentication


MemJS is a pure Node.js client library for using memcache, in particular, the MemCachier service. It uses the binary protocol and support SASL authentication.

Documentation can be found here:

  1. Requirements
  2. Installation
  3. Configuration
  4. Usage
  5. How to help

MemJS is tested to work with version 0.6 or higher of Node.js.

MemJS is available from the npm registry:

$ npm install memjs

To install from git:

$ git clone git://
$ cd memjs
$ npm link

MemJS was designed for the MemCachier memcache service but will work with any memcache server that speaks the binary protocol. Many software repositories have a version of memcacached available for installation:

$ apt-get install memcached
$ brew install memcached

MemJS understands the following environment variables:

  • MEMCACHIER_SERVERS - used to determine which servers to connect to. Should be a comma separated list of _[hostname:port]_.
  • MEMCACHIER_USERNAME - if present with MEMCACHIER_PASSWORD, MemJS will try to authenticated to the server using SASL.
  • MEMCACHIER_PASSWORD - if present with MEMCACHIER_USERNAME, MemJS will try to authenticated to the server using SASL.

Environment variables are only used as a fallback for explicit parameters.

You can start using MemJS immediately from the node console:

$ var memjs = require('memjs')
$ var client = memjs.Client.create()
$ client.get('hello', console.log)

The best way to contribut to the project is by reporting bugs and testing unpublished versions. If you have a staging or development app, the easiest way to do this is using the git repository as your memjs package dependency---in package.json:

  "name": "MyAppName",
  "dependencies": {
    "memjs": "git://"

If you find a bug, please report as an issue. If you fix it, please don't hesitate to send a pull request on GitHub or via e-mail.

Feature suggestions are also welcome! These includes suggestions about syntax and interface design.

Finally, a great way to contribute is to implement a feature that's missing and send a pull request. The list below contains some planned features that have not been addressed yet. You can also implement a feature not a list if you think it would be good.

  • Support flags
  • Support prepend, append
  • Support multi commands
  • Support touch
  • Support CAS
  • Consistent hashing for keys and/or pluggable hashing algorithm

Copyright (c) 2012 Amit Levy, MemCachier. See LICENSE for details.