chriso/redback
{ "createdAt": "2011-05-09T20:49:18Z", "defaultBranch": "master", "description": "A high-level Redis library", "fullName": "chriso/redback", "homepage": "", "language": "JavaScript", "name": "redback", "pushedAt": "2016-12-16T01:16:14Z", "stargazersCount": 540, "topics": [], "updatedAt": "2025-11-27T02:11:05Z", "url": "https://github.com/chriso/redback"}Redback
Section titled “Redback”[![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Downloads][downloads-image]][npm-url]
A high-level Redis library.
$ npm install redbackIntroduction
Section titled “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
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
Section titled “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<structure>().
Other uses
Section titled “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 messageschannel.on('message', function (msg) { console.log(msg);});
//To send messageschannel.publish(msg);Documentation
Section titled “Documentation”See the annotated source.
The tests require a local redis instance running on localhost:6379. Note that
redis database #11 will be flushed prior to each run.
$ npm testCredits
Section titled “Credits”- Matt Ranney for his node_redis library.
- GitHub user sreeix for the bloom filter implementation.
License
Section titled “License”MIT
[downloads-image] !: http://img.shields.io/npm/dm/redback.svg [npm-url] !: https://npmjs.org/package/redback [npm-image] !: http://img.shields.io/npm/v/redback.svg [travis-url] !: https://travis-ci.org/chriso/redback [travis-image] !: http://img.shields.io/travis/chriso/redback.svg