redis-limit
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 = ;var RateLimiter = ; var limiter = ; ;
Options
redis
- a redis clientinterval
- the time in milliseconds to completely fill the bucketmaxInInterval
- the capacity of the bucket. see the note above about why this isn't truly the maximum requests allowed in any intervalminDifference
- minimum time between requests. requests made when there are no tokens keep the bucket from refilling, requests made less thanminDifference
apart do not keep the bucket from fillingnamespace
- namespace for keys in redis, multiple instaces can share a namespace with no race conditions