What is memjs?
memjs is a client library for interacting with Memcached servers in Node.js. It provides a simple and efficient way to store, retrieve, and manage cached data using the Memcached protocol.
What are memjs's main functionalities?
Connecting to a Memcached server
This feature allows you to establish a connection to a Memcached server using the memjs client.
const memjs = require('memjs');
const client = memjs.Client.create();
Storing data in the cache
This feature allows you to store data in the Memcached server with an optional expiration time.
client.set('key', 'value', {expires: 10}, function(err, val) {
if (err) throw err;
console.log('Value set successfully');
});
Retrieving data from the cache
This feature allows you to retrieve data from the Memcached server using a key.
client.get('key', function(err, val) {
if (err) throw err;
console.log('Retrieved value:', val.toString());
});
Deleting data from the cache
This feature allows you to delete data from the Memcached server using a key.
client.delete('key', function(err, val) {
if (err) throw err;
console.log('Key deleted successfully');
});
Other packages similar to memjs
memcached
The 'memcached' package is another popular client for interacting with Memcached servers in Node.js. It offers a rich set of features and supports multiple servers, consistent hashing, and more. Compared to memjs, 'memcached' provides more advanced configuration options and is widely used in production environments.
node-memcached
The 'node-memcached' package is a high-performance Memcached client for Node.js. It supports clustering, consistent hashing, and various other features. It is known for its speed and efficiency, making it a good alternative to memjs for high-throughput applications.
MemJS
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
- Requirements
- Installation
- Configuration
- Usage
- 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 presentMEMCACHE_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 setval
: value to setoptions
: an object of options. Currently supports only the key expires
, which is a time interval, in seconds, after which memcached will expire the objectcallback
: a callback invoked after the value is set
err
: errorval
: 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 Buffer
s, regardless of whether a
Buffer
or String
was passed to set
.
key
: key to retrievecallback
: a callback invoked after the value is retrieved
err
: errorval
: 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.