Need help with redback?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

chriso
548 Stars 46 Forks MIT License 137 Commits 2 Opened issues

Description

A high-level Redis library

Services available

!
?

Need anything else?

Contributors list

# 2,451
JavaScr...
Shell
PHP
node
113 commits
# 186,126
Node.js
headles...
C#
Shell
6 commits
# 598,523
JavaScr...
2 commits
# 139,837
Ruby
HTML
formdat...
multipa...
1 commit
# 305,634
sprintf
HTML
CSS
Shell
1 commit
# 105,196
Lua
coffees...
fontfor...
sparkli...
1 commit
# 76,562
npm
present...
Shell
C++
1 commit
# 194,526
Amazon ...
C#
time-tr...
Flutter
1 commit
# 633,586
Go
JavaScr...
1 commit

Redback

NPM version Build Status Downloads

A high-level Redis library.

$ npm install redback

Introduction

Redback provides an accessible and extensible interface to the Redis data types and allows you to create your own structures with ease. Redback comes with the following built-in structures: List, Set, SortedSet, Hash, Channel, Cache

It also comes with the following advanced data structures:

  • DensitySet - A sorted set where adding an element increments its score and removing it decrements it
  • KeyPair - Uses two hash structures and an auto-incrementing key to assign an ID to each unique value
  • SocialGraph - Similar to Twitter's (following vs. followers)
  • CappedList - A list with a fixed length
  • Queue - A simple FIFO or LIFO queue
  • RateLimit - Count the number of times an event occurs over an interval. See this introduction.
  • BloomFilter - A probabilistic structure used to test whether an an element exists in a set

Usage

var redback = require('redback').createClient();

// or

var redis = require('redis').createClient(); var redback = require('redback').use(redis);

var user3 = redback.createSocialGraph(3);
user3.follow(1, callback);

var log = redback.createCappedList('log', 1000); log.push('Log message ...');

var user = redback.createHash('user1'); user.set({username: 'chris', password: 'foobar'}, callback);

Creating your own structures

Use

addStructure(name, methods)
to create your own structure.

Let's create a queue that can be either FIFO or LIFO:

redback.addStructure('SimpleQueue', {
    init: function (options) {
        options = options || {};
        this.fifo = options.fifo;
    },
    add: function (value, callback) {
        this.client.lpush(this.key, value, callback);
    },
    next: function (callback) {
        var method = this.fifo ? 'rpop' : 'lpop';
        this.client[method](this.key, callback);
    }
});

Call

createSimpleQueue(key, options)
to use the queue:
var queue = redback.createSimpleQueue('my_queue', {fifo: true});
queue.add('awesome!');

Structures have access to a Redis key

this.key
and the Redis client
this.client
. If an
init()
method is defined then it is called after the structure is instantiated. Also note that
init()
receives any extra parameters from
create()
.

Other uses

Cache backend

var cache = redback.createCache(namespace);
cache.set('foo', 'bar', callback);
cache.get('foo', function (err, foo) {
    console.log(foo); //bar
});

Pub/sub provider

var channel = redback.createChannel('chat').subscribe();

//To received messages channel.on('message', function (msg) { console.log(msg); });

//To send messages channel.publish(msg);

Documentation

See the annotated source.

Tests

The tests require a local redis instance running on

localhost:6379
. Note that redis database #11 will be flushed prior to each run.
$ npm test

Credits

  • Matt Ranney for his node_redis library.
  • GitHub user sreeix for the bloom filter implementation.

License

MIT

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.