0.1.6 • Published 10 years ago

redis-limit v0.1.6

Weekly downloads
5
License
ISC
Repository
github
Last release
10 years ago

redis-limit

Build Status Coverage Status

NPM NPM

Description

A simple redis backed rate limiter. This is based on this implementation and redis-rate-limiter.

The bucket is constantly being refilled with tokens. This means that setting an interval of 1000 milliseconds and a maxInInterval of 10 requests will fill tokens at a rate of 10 tokens per second (1 token every 0.1 seconds). Therefore if a bucket is full 10 requests could be made immediately then 1 more request every 0.1 seconds, so it's possible to make more than 10 requests in any second if tokens are saved up. Instead using a maxInInterval of 1 and interval of 100 milliseconds will prevent there from ever being more than 10 requests per second, but requests will have to be 100 milliseconds apart.

Installation

npm install redis-limit

Usage

var redis = require("redis");
var RateLimiter = require("redis-limit");

var limiter = RateLimiter({
    redis: redis.createClient(),
    interval: 1000, // milliseconds
    maxInInterval: 10,
    minDifference: 10, // requests have to be 10 milliseconds apart
    namespace: "redis-limit"
});

limiter("key", function(err, result) {
    // result is the time in milliseconds until a request is allowed
    // 0 if there are tokens in the bucket now
    console.log(result);
});

Options

  • redis - a redis client
  • interval - the time in milliseconds to completely fill the bucket
  • maxInInterval - the capacity of the bucket. see the note above about why this isn't truly the maximum requests allowed in any interval
  • minDifference - minimum time between requests. requests made when there are no tokens keep the bucket from refilling, requests made less than minDifference apart do not keep the bucket from filling
  • namespace - namespace for keys in redis, multiple instaces can share a namespace with no race conditions
0.1.6

10 years ago

0.1.5

10 years ago

0.1.4

10 years ago

0.1.3

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago

0.0.1

10 years ago

0.0.0

10 years ago