Skip to content

Instantly share code, notes, and snippets.

@Twipped
Created August 4, 2014 17:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Twipped/f88b75523786f5e4e079 to your computer and use it in GitHub Desktop.
Save Twipped/f88b75523786f5e4e079 to your computer and use it in GitHub Desktop.
var proxmis = require('proxmis');
var parse = function (callback) {
return function (err, value) {
if (err) {
callback(err);
} else {
try {
value = JSON.parse(value);
callback(null, value);
} catch (e) {
callback(e);
}
}
};
};
module.exports = function (redis, listName) {
if (!redis) {
throw new Error('Must provide a redis client object');
}
if (!listName) {
throw new Error('Must provide the name of the redis list to queue with.');
}
return {
push: function (value, callback) {
callback = proxmis(callback);
redis.rpush(listName, JSON.stringify(value), callback);
return callback.promise;
},
pop: function (callback) {
callback = proxmis(callback);
redis.rpop(listName, parse(callback));
return callback.promise;
},
shift: function (value, callback) {
callback = proxmis(callback);
redis.lpop(listName, parse(callback));
return callback.promise;
},
unshift: function (value, callback) {
callback = proxmis(callback);
redis.lpush(listName, JSON.stringify(value), callback);
return callback.promise;
},
first: function (callback) {
callback = proxmis(callback);
redis.lrange(listName, 0, 0, parse(callback));
return callback.promise;
},
last: function (callback) {
callback = proxmis(callback);
redis.lrange(listName, -1, -1, parse(callback));
return callback.promise;
},
length: function (callback) {
callback = proxmis(callback);
redis.llen(listName, callback);
return callback.promise;
}
};
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment