Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

redis-q

0.0.3 • Public • Published

redis-q

kriskowal's Q support for node_redis.

usage

Q(my favorite promise/A+ impl) support

  • to apply Q with default suffix 'Q':
var redis = require('redis-q')(require('redis'));
// verbose way: redisQ is unused
var redis = require('redis'),
    redisQ = require('redis-q')(redis)
// shortest way: redis will be loaded by redis-q
var redis = require('redis-q')();
  • use Q-applied RedisClient methods:
var client = redis.createClient(...);
client.setQ(...)
  .then(function (result) { ... })
  .catch(function (err) { ... })
  .done();
  • use Q-applied Multi methods:
var client = redis.createClient(...);
client.multi()
  .set(...)
  .set(...)
  ...
  .execQ() // no 'Q' suffix for multi methods except for execQ()
  .then(function (result) { ... })
  .catch(function (err) { ... })
  .done();
  • to apply Q with custom suffix/prefix:
var redis = require('redis-q')(require('redis'), {prefix:'promiseOf_', suffix:'_withQ'});
var client = redis.createClient(...);
client.promiseOf_set_withQ(...)
  .then(function (result) { ... })
  .catch(function (err) { ... })
  .done();
  • to apply Q with custom name mapper:
function customMapper(name) {
  return 'q' + name.charAt(0).toUpperCase() + name.substring(1);
}
var redis = require('redis-q')(require('redis'), {mapper:customMapper});
var client = redis.createClient(...);
client.qSet(...)
  .then(function (result) { ... })
  .catch(function (err) { ... })
  .done();
  • to apply Q with multi and spread:
var redis = require('redis-q')(require('redis'));
var client = redis.createClient(...);
client.multi()
  .set(...) // command0 --> results[0]
  .set(...) // command1 --> results[1]
  ...       // ... commandN --> results[N]
  .execQ() // no 'Q' suffix for multi methods except for execQ()
  .then(function (results) { assert(results instanceof Array); }) // NOTE: then!
  .catch(function (err) { ... })
  .done();
var redis = require('redis-q')(require('redis'));
var client = redis.createClient(...);
client.multi()
  .set(...) // command0 --> result0
  .set(...) // command1 --> result1
  ...       // ... commandN --> resultN
  .execQ() // no 'Q' suffix for multi methods except for execQ()
  .spread(function (result0, result1, ..., resultN) { ... }) // NOTE: spread!
  .catch(function (err) { ... })
  .done();

JSON support

  • EXPERIMENTAL to use JSON object for a value parameter/result with json:
var redis = require('redis-q')(require('redis'), {json:true});
var client = redis.createClient(...);
client.setQ('a', {b:'c', d:'e'})
  .then(function (result) { return client.getQ('a'); })
  .then(function (result) { assert(result.b === 'c' && result.d === 'e'); ... })
  .catch(function (err) { ... })
  .done();
var redis = require('redis-q')(require('redis'), {json:true});
var client = redis.createClient(...);
client.multi()
  .setQ('a', 'b') // NOTE: setQ not set
  .setQ('b', ['c', 123, true])
  .setQ('c', {d:'e', f:123, g:true})
  .setQ(...)
  ...
  .execQ() // no 'Q' suffix for multi methods except for execQ()
  .then(function (results) {
    assert(results instanceof Array);
    return client.mgetQ('a', 'b', 'c', ...);
  })
  .then(function (result) {
    assert(result instanceof Array);
  })
  .catch(function (err) { ... })
  .done();

TODO: msetQ([a, b, ..., z]) style(multiple arguments(commands/parameters) in an array) is not working with 'json' option.

That's all folks!

Keywords

none

install

npm i redis-q

Downloadsweekly downloads

0

version

0.0.3

license

MIT

repository

githubgithub

last publish

collaborators

  • avatar