tr

then-redis

A fast, promise-based Redis client for node.js

Showing:

Popularity

Downloads/wk

8.2K

GitHub Stars

315

Maintenance

Last Commit

5yrs ago

Contributors

9

Package

Dependencies

0

Size (min+gzip)

1.7KB

License

MIT

Type Definitions

Tree-Shakeable

No?

Categories

Readme

This package is no longer maintained. node_redis now includes support for promises in core, so this is no longer needed.

then-redis Travis npm package

then-redis is a fast, promise-based Redis client for node.js. It's build on top of node_redis, so it's safe and stable.

Installation

Using npm:

$ npm install --save redis redis-commands then-redis

Node version >=4 is required.

Then, use as you would anything else:

// using ES6 modules
import { createClient } from 'then-redis'

// using CommonJS modules
var createClient = require('then-redis').createClient

Usage

To create a client:

import { createClient } from 'then-redis'

// Use the default config
const db = createClient()

// Or, specify custom config with a URL
const db = createClient('tcp://localhost:6379')

// Or, use an object config
const db = createClient({
  host: 'localhost',
  port: 6379,
  password: 'password'
})

Once you have a client, you're ready to issue some commands. All Redis commands are present on the Client prototype and may be called with variable length argument lists*. Every command returns a promise for its result. Pipelining happens automatically in most normal usage.

// Simple set, incrby, and get
db.set('my-key', 1)
db.incrby('my-key', 5)
db.get('my-key').then(function (value) {
  assert.strictEqual(value, 6)
})

// Multi-key set/get
db.mset({ a: 'one', b: 'two' })
db.mget('a', 'b').then(function (values) {
  assert.deepEqual(values, [ 'one', 'two' ])
})

// Sets
db.sadd('my-set', 1, 2, 3)
db.sismember('my-set', 2).then(function (value) {
  assert.strictEqual(value, 1)
})

// Hashes
var originalHash = { a: 'one', b: 'two' }
db.hmset('my-hash', originalHash)
db.hgetall('my-hash').then(function (hash) {
  assert.deepEqual(hash, originalHash)
})

// Transactions
db.multi()
db.incr('first-key')
db.incr('second-key')
db.exec().then(function (reply) {
  assert.deepEqual(reply, [ 1, 1 ])
})

// Pubsub
var subscriber = redis.createClient()
subscriber.on('message', function (channel, message) {
  console.log('Received message: ' + message)
})
subscriber.subscribe('my-channel').then(function () {
  db.publish('my-channel', 'a message')
})

If you don't like the variable-length argument lists, or you already have an array of arguments that you need to pass to a command, you can always call client.send() directly. It takes two arguments: 1) the name of the Redis command and 2) an array of command arguments.

db.send('get', [ 'my-key' ])
db.send('incrby', [ 'my-key', 5 ])
db.send('mset', [ 'a', 'one', 'b', 'two' ])

* INFO, MGET, MSET, MSETNX, HMSET, HGETALL, LPUSH, and RPUSH optionally accept/return JavaScript objects for convenience in dealing with Redis' multi-key and hash APIs

Compatibility

For best results, it is recommended that you use Redis 2.6 or above.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
No reviews found
Be the first to rate

Alternatives

No alternatives found

Tutorials

No tutorials found
Add a tutorial