Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

redback

Package Overview
Dependencies
Maintainers
1
Versions
30
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

redback

A high-level Redis library

  • 0.5.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
96
decreased by-20.66%
Maintainers
1
Weekly downloads
 
Created
Source

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<structure>().

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

FAQs

Package last updated on 16 Dec 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc