 Hello everyone! This is the ninth post in my new node.js modules you should know about article series.
Hello everyone! This is the ninth post in my new node.js modules you should know about article series.
The first post was about dnode - the freestyle rpc library for node, the second was about optimist - the lightweight options parser for node, the third was about lazy - lazy lists for node, the fourth was about request - the swiss army knife of HTTP streaming, the fifth was about hashish - hash combinators library, the sixth was about read - easy reading from stdin, the seventh was about ntwitter - twitter api for node, the eighth was about socket.io that makes websockets and realtime possible in all browsers.
Today I'm going to introduce you to node_redis - the best node.js Redis client API library. Redis node.js module is written by Matt Ranney.
This library is a complete Redis client for node.js. It supports all Redis commands, including many recently added commands like EVAL from experimental Redis server branches.
Here is an example of using redis library:
var redis = require("redis");
var client = redis.createClient();
client.on("error", function (err) {
    console.log("Error " + err);
});
client.set("string key", "string val", redis.print);
client.hset("hash key", "hashtest 1", "some value", redis.print);
client.hset(["hash key", "hashtest 2", "some other value"], redis.print);
client.hkeys("hash key", function (err, replies) {
    console.log(replies.length + " replies:");
    replies.forEach(function (reply, i) {
        console.log("    " + i + ": " + reply);
    });
    client.quit();
});
Here is the output when you run this example:
mjr:~/work/node_redis (master)$ node example.js
Reply: OK
Reply: 0
Reply: 0
2 replies:
    0: hashtest 1
    1: hashtest 2
mjr:~/work/node_redis (master)$ 
Each Redis command is exposed as a function on the client object. All functions take either an args Array plus optional callback Function or a variable number of individual arguments followed by an optional callback.
Here is an example of passing an array of arguments and a callback:
client.mset(["key 1", "val 1"], function (err, res) {});
Here is that same call in the second style:
client.mset("key 1", "val 1", function (err, res) {});
Note that in either form the callback is optional:
client.set("some key", "some val");
client.set(["some other key", "some val"]);
For a list of Redis commands, see Redis Command Reference.
The commands can be specified in uppercase or lowercase for convenience - client.get() is the same as client.GET().
You can install redis through npm as always:
npm install redis
Redis on GitHub: https://github.com/mranney/node_redis.
Pieter Noordhuis has written a binding to the official hiredis C library, which is non-blocking and fast. It's called hiredis-node. To use hiredis, do:
npm install hiredis redis
If hiredis is installed, node_redis will use it by default. Otherwise, a pure JavaScript parser will be used.
