• Stars
    star
    315
  • Rank 132,951 (Top 3 %)
  • Language
    JavaScript
  • Created over 11 years ago
  • Updated over 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

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.

More Repositories

1

unpkg

The CDN for everything on npm
JavaScript
2,989
star
2

expect

Write better assertions
JavaScript
2,291
star
3

mach

HTTP for JavaScript
JavaScript
812
star
4

http-client

Compose HTTP clients using JavaScript's fetch API
JavaScript
506
star
5

web-starter

Build and deploy a React website quickly on Heroku
JavaScript
417
star
6

citrus

Parsing Expressions for Ruby
Ruby
403
star
7

strata

A modular, streaming HTTP server for node.js
JavaScript
365
star
8

shadowbox

A beautiful, versatile lightbox for photos and videos
JavaScript
296
star
9

rollup-plugin-url-resolve

Use URLs in your Rollup imports
JavaScript
136
star
10

react-loop-2019

Notes and code examples from my React Loop 2019 Keynote
JavaScript
116
star
11

resolve-pathname

Resolve URL pathnames using JavaScript
JavaScript
63
star
12

expect-element

Write better assertions for DOM nodes
JavaScript
61
star
13

my-react

An experimental drop-in replacement for React without ES6 classes or "this"
JavaScript
58
star
14

dotfiles

My dotfiles
Vim Script
57
star
15

unpkg-demos

Experiments in how to use unpkg
HTML
54
star
16

history-server

An HTTP server for single-page apps that use the HTML5 history API
JavaScript
52
star
17

rack-accept

HTTP Accept* for Ruby/Rack
Ruby
46
star
18

mint

A small, fast documentation generator for literate-style programming
JavaScript
41
star
19

sinatra-session

Simple, secure sessions for Sinatra
Ruby
38
star
20

firework

A distributed, fault-tolerant work queue for Firebase
JavaScript
38
star
21

s3-thumb-server

Serve thumbnails of images stored on S3 over HTTP
JavaScript
35
star
22

ember-firebase

Firebase bindings for Ember.js
JavaScript
32
star
23

value-equal

Are these two JavaScript values equal?
JavaScript
31
star
24

monterey

Minimal OOP for JavaScript
JavaScript
31
star
25

optionparser

Command-line option parser for PHP
PHP
29
star
26

bufferedstream

A robust stream implementation for node.js and the browser
JavaScript
27
star
27

tree-shaking-react-router

Tree-shaking React Router with webpack 4
JavaScript
25
star
28

icare

A badge to promote empathy in software design, craftsmanship, and maintenance
HTML
25
star
29

react-style

Declarative styling for React components
JavaScript
21
star
30

remix-ssg-example

Small example of how to statically generate a Remix site using wget
TypeScript
19
star
31

dropbox-client

Dropbox API v2 client for JavaScript
JavaScript
17
star
32

bencode

Bencode library for PHP
PHP
15
star
33

reactjsday-2018

Demo + slides from my ReactJS Day 2018 keynote in Verona, Italy
JavaScript
14
star
34

symboltable

A Symbols-only Hash for Ruby
Ruby
13
star
35

broccoli-rev

A Broccoli plugin for adding revision checksums to file names
JavaScript
13
star
36

Fullscreen

A fullscreen sample app for Cocoa with MacRuby
Ruby
12
star
37

yuicompressor

A YUI JavaScript and CSS compressor wrapper for Ruby and JRuby
Ruby
12
star
38

react-router-examples

Code examples for React Router v6
TypeScript
12
star
39

usererror

A base class for JavaScript errors
JavaScript
12
star
40

plural

Pluralization library for PHP
PHP
12
star
41

grand

Generate random data in JavaScript
JavaScript
12
star
42

babel-plugin-import-visitor

Visit all import sources in Babel
JavaScript
10
star
43

then-couchdb

A promise-based CouchDB client for node.js
JavaScript
9
star
44

mwrc2012

Sample code from my talk at MWRC 2012
Ruby
8
star
45

multipart-web-stream

A streaming parser for multipart fetch streams
TypeScript
8
star
46

chatter

A little chat server for #CodeClass
JavaScript
6
star
47

markdown

Markdown as a Service
Ruby
5
star
48

http-client-cookie-jar

Cookie jar middleware for http-client
JavaScript
5
star
49

stratajs.org

The web site for the Strata web framework
JavaScript
5
star
50

form-data-parser

A request.formData() wrapper with pluggable file upload handling
TypeScript
5
star
51

maker

Small library for quickly constructing large segments of HTML in JavaScript
JavaScript
5
star
52

fetch-super-headers

A suite of tools that make it a little more fun to work with Headers
TypeScript
4
star
53

sinatra-spec

Simple specs for Sinatra apps using MiniTest
Ruby
3
star
54

broccoli-select

A Broccoli plugin for selecting files based on glob patterns
JavaScript
3
star
55

jview

A subclass of jQuery.fn for creating views in JavaScript
JavaScript
3
star
56

sequel-factory

Simple, powerful factories for Sequel models
Ruby
3
star
57

describe-property

Define JavaScript object properties quickly with ES5 defaults
JavaScript
3
star
58

mwrc2010

Rack For Web Developers - My presentation from MountainWest RubyConf 2010
Ruby
2
star
59

esbuild-node-builtins-sideeffects

JavaScript
2
star
60

rollup-watch-dir

JavaScript
2
star
61

html5-devconf-may2014

The slides and examples from my presentation at HTML5 DevConf on May 22, 2014
JavaScript
2
star
62

react-router-monorepo-stub

JavaScript
2
star
63

esbuild-empty-file-test

JavaScript
2
star
64

rollup-plugin-babel-bug

JavaScript
2
star
65

rubyconf2010

Grammars, Parsers, and Interpreters. In Ruby. ~ My presentation from RubyConf 2010
Ruby
2
star
66

lazy-file

Lazy, streaming files for JavaScript
TypeScript
2
star
67

jquery-pop

Painless views as models for jQuery
1
star
68

jdrag

Simple drag and drop for jQuery
JavaScript
1
star
69

redemption-from-callback-hell

JavaScript
1
star
70

mjackson.me

JavaScript
1
star
71

file-system

A simple filesystem for JavaScript, based on the File and Streams APIs
TypeScript
1
star
72

JavaScriptObjectsAndPatterns

Some code examples for a class I did for Twitter's HackWeek Q4 2012
JavaScript
1
star
73

mwrc2011

My presentation from MWRC 2011
1
star
74

hoedown2010

My presentation & code for the Ruby Hoedown 2010
1
star