RedisLimiter
A simple and efficient Node.js + redis based rate limiter.
Examples
Express app request limiter
var redis = ;var client = redis;var RedisLimiter = ;var limiter = client: client prefix: 'lim'; // 5 requests per secondlimiter; // 7 requests every 10 secondslimiter; app;
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.