Skip to content

Instantly share code, notes, and snippets.

@saivenkat
Created December 10, 2009 14:33
Show Gist options
  • Select an option

  • Save saivenkat/253358 to your computer and use it in GitHub Desktop.

Select an option

Save saivenkat/253358 to your computer and use it in GitHub Desktop.
Node.js Redis Client
//Sample usage
//var redis = require("./redis");
//var sys = require('sys');
//var c = redis.connect('0.0.0.0', 6379);
//c.addListener("connect", function (){
// c.hasKey("foss").addCallback(function(data) {
// sys.puts("Cool " + data);
// c.quit();
// });
//});
var tcp = require('tcp');
var sys = require('sys');
var conn;
var emitter = new process.EventEmitter();
var callbacks = [];
var response = '';
exports.connect = function(host, port) {
conn = tcp.createConnection(port || 6379, host || '0.0.0.0');
conn.addListener("connect", onConnect);
conn.addListener("receive", onReceive);
conn.addListener("disconnect", onDisconnect);
return this;
}
exports.quit = function() {
if (conn.readyState != "open")
throw "connection is open";
conn.close();
emitter.emit("close");
}
function onConnect() {
emitter.emit("connect");
}
function onDisconnect(hadError) {
if (hadError)
throw "disconnect from redis in error"
}
function onReceive(data) {
var reply = data.replace("\n", "");
var result = false;
if(reply.indexOf(":1") > -1) {
result = true;
}
var callback = callbacks.shift();
callback.promise.emitSuccess(result);
}
exports.addListener = function(event, listener) {
emitter.addListener(event, listener);
}
exports.hasKey = function (key) {
var promise = new process.Promise;
callbacks.push({'cmd' : 'hasKey', 'promise' : promise});
conn.send("EXISTS " + key + "\r\n");
return promise;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment