• Stars
    star
    195
  • Rank 199,374 (Top 4 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 12 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

MemJS

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: https://memjs.netlify.com/

TOC

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

Requirements

Supported Node.js versions

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

Installation

MemJS is available from the npm registry:

$ npm install memjs

To install from git:

$ git clone git://github.com/alevy/memjs.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 memcached available for installation:

Ubuntu

$ apt-get install memcached

OS X

$ brew install memcached

Configuration

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.
  • MEMCACHE_USERNAME - used if MEMCACHIER_USERNAME is not present
  • MEMCACHE_PASSWORD - used if MEMCACHIER_PASSWORD is not present

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

Usage

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

Contributing

The best way to contribute 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://github.com/alevy/memjs.git#master"
    ...
  }
}

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.

TODOS

  • Support flags
  • Support multi commands
  • Support CAS
  • Consistent hashing for keys and/or pluggable hashing algorithm

Copyright

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

More Repositories

1

mc

Binary Memcached client for Go with SASL support
Go
35
star
2

examples-sinatra

MemCachier Sinatra / Ruby Usage Example
Ruby
15
star
3

examples-django

MemCachier Django usage example
Python
13
star
4

examples-rails-gis

MemCachier Rails Usage Example
Ruby
12
star
5

memcachier-gem

Gem that makes MemCachier compatible with standard memcache libraries
Ruby
8
star
6

examples-flask

Flask & MemCachier tutorial
Python
8
star
7

aws-route53

A Haskell AWS Route53 client library
Haskell
6
star
8

examples-node

MemCachier Node Usage Example
JavaScript
6
star
9

examples-django-tasklist

Django & MemCachier tutorial
Python
4
star
10

examples-php

MemCachier PHP Usage Example
PHP
4
star
11

examples-java

MemCachier Java Usage Example
Java
4
star
12

examples-laravel

MemCachier & Laravel tutorial
PHP
2
star
13

example-code

Various odds and ends of MemCachier example code
Python
2
star
14

bcrypt

Go bcrypt library
C
2
star
15

docs

MemCachier Documentation
Python
2
star
16

examples-gin

Gin & MemCachier on Heroku tutorial
Go
2
star
17

examples-django2

MemCachier on Heroku with Django tutorial
Python
2
star
18

django-ascii

Django cache backend supporting MemCachier
Python
1
star
19

examples-spring-boot

MemCachier & Spring Boot on Heroku tutorial
Java
1
star
20

rails_sandbox

MemCachier Rails Sandobx
Ruby
1
star
21

memcachier-tls-buildpack

MemCachier TLS Buildpack
Shell
1
star
22

django-docker-ecs-tutorial

Tutorial showing use of MemCachier with Django+Docker+ECS
Python
1
star
23

libmemcached

Fork of https://code.launchpad.net/~tangent-trunk/libmemcached
C++
1
star
24

examples-expressjs

Express.js & MemCachier on Heroku tutorial
JavaScript
1
star
25

expressjs-elastic-beanstalk-tutorial

Code to follow along with the *Scaling an Express.js Application with Amazon Elastic Beanstalk* tutorial.
JavaScript
1
star
26

examples-rails-heroku

MemCachier Heroku Rails Example: https://devcenter.heroku.com/articles/building-a-rails-3-application-with-memcache
Ruby
1
star