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!

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 0.0.3
    0
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 0.0.3
    0
  • 0.0.2
    0
  • 0.0.1
    0

Package Sidebar

Install

npm i redis-q

Weekly Downloads

0

Version

0.0.3

License

MIT

Last publish

Collaborators

  • iolo