Skip to content
A memcache client for node using the binary protocol and SASL authentication
Branch: master
Clone or download
Latest commit f0ec720 Jun 25, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
bench Get rid of deprecated new Buffer calls Jun 15, 2019
docs Fix redirect for docs. Mar 30, 2018
lib/memjs Bump version Jun 15, 2019
test Bump version Jun 15, 2019
.gitignore Add build directory to gitignore. Jul 23, 2014
.travis.yml Remove iojs from travis Mar 22, 2018
AUTHORS Add Ovidiu to AUTHORS Dec 26, 2017
CHANGELOG Bump version Mar 22, 2018
LICENSE Change to MIT licence Mar 22, 2018 Fix minor error in README Mar 21, 2018
package-lock.json Bump version Jun 15, 2019
package.json Bump version Jun 25, 2019


npm Build Status Gitter

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


Supported Node.js versions

MemJS is tested to work with version 0.10 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', function(err, val) { console.log(val); })

If callbacks are not specified, the command calls return promises.

Settings Values

client.set('hello', 'world', {expires:600}, function(err, val) {


The set(key, val, options, callback) function accepts the following parameters.

  • key: key to set
  • val: value to set
  • options: an object of options. Currently supports only the key expires, which is a time interval, in seconds, after which memcached will expire the object
  • callback: a callback invoked after the value is set
    • err : error
    • val : value retrieved

Getting Values

client.get('hello', function(err, val) {


The get(key, callback) function accepts the following parameters.

Note that values are always returned as Buffers, regardless of whether a Buffer or String was passed to set.

  • key: key to retrieve
  • callback: a callback invoked after the value is retrieved
    • err : error
    • val : value retrieved as a Buffer


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 multi commands
  • Support CAS
  • Consistent hashing for keys and/or pluggable hashing algorithm


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

You can’t perform that action at this time.