Coder Social home page Coder Social logo

redis-limiter's Introduction

#RedisLimiter A simple and efficient Node.js + redis based rate limiter.

Examples

Express app request limiter

var redis = require('redis');
var client = redis.createClient();
var RedisLimiter = require('redis-limiter');
var limiter = new RedisLimiter({
   client: client,
   prefix: 'lim'
});

// 5 requests per second
limiter.add('/api/actionOne', {
   limit: 5,
   interval: 1
});

// 7 requests every 10 seconds
limiter.add('/api/actionTwo', {
   limit: 7,
   interval: 10
});

app.get('/api/*', function(req, res, next) {
   limiter.limit(req.path, req.ip, function(err, result) {
      if (err || !result) {
         return next();
      }

      if (result.exceeded) {
         return res.sendStatus(429);
      }

      next();
   });
});

API

Constructor(opt): RedisLimiter

opt.client The redis client object.
opt.prefix The key prefix for entries into your redis store (default: 'lim').
opt.limits Initialise all limits with a single object that maps name -> opt. This is an alternative to calling the add method for each limit.

add(name, opt): undefined

Add a single limit object with name name, having interval and limit properties defined within opt.

remove(name): undefined

Remove a limit object.

hasLimit(name): Boolean

Test if a limit object exists.

limit(name, user, cb): undefined

Increment a particular user's usage count for a limit object on the current interval. If the current interval does not exist or has expired, a new one is created.

The callback function receives an error object and a result object as arguments. The result object will contain the fields: exceeded:Boolean and count:Number indicating whether or not the action's limit was exceeded and the count for the current interval respectively.

redis-limiter's People

Contributors

tojrobinson avatar

Stargazers

Dodle Saikiran avatar Daniel Arno George Koehler avatar Jay avatar Francois-Guillaume Ribreau avatar

Watchers

 avatar

redis-limiter's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.