Node.js + redis based rate lim
#RedisLimiter A simple and efficient Node.js + redis based rate limiter.
Examples Express app request limitervar 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 a single limit object with name name
, having interval
and limit
properties defined within opt
.
Remove a limit object.
hasLimit(name): BooleanTest if a limit object exists.
limit(name, user, cb): undefinedIncrement 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.
版权声明:
1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。2、网站不提供资料下载,如需下载请到原作者页面进行下载。