scalable-rate-limiter

1.0.9 • Public • Published

Scalable Rate Limiter

Build Status

A professional quality rate limiter that horizontally scales with Redis and eliminates race conditions

Prerequisites

Redis needs to be required in and setup to use the correct host and credentials. https://www.npmjs.com/package/redis

npm install redis

Installing

To install the library from NPM:

npm install scalable-rate-limiter

To instantiate the rate limiter and call it for API requests

/*
* @param {Object} redis The preconfigured redis connection
* @param {Boolean} enableLogging Set this to enable logging
* @param {Integer} allowedReqsPerInterval The number of allowed tokens a user can use (API requests) in time period
* @param {Integer} intervalThreshold The interval threshold to wait before
* @param {String}  rateLimiterNameSpace redis namespace of the rate limiter: default: '.rate.limiter'
* @param {Integer} allowedReqsPerDay The number of allowed requests a user can make in one day
* @param {Integer} dailyTTL How long to store daily quota usage in redis
* @param {String} timezone Timezone for daily tally
*/
let redis = require("redis"),
    redisClient = redis.createClient(),
    limiter = new RateLimiter(redisClient, false, 5, 3, '.rate.limiter');

To use the rate limiter:

// To call the rate limiter on a userID for API requests
limiter.rateLimitFunction(userID, (limited) => {
  if(!limited){
    // Make API call request for the user here
    apiCall()
  }
})

Contributing

This is licensed under MIT. Please feel free to make pull requests for main features under this license.

Wish list:

1) Allow the rate limiter to have multiple limits or thresholds
2) Use options object to simulate named parameters

Authors

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Acknowledgments

  • willyschu for implementing the LUA rate limiter

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.0.9
    1
    • latest

Version History

Package Sidebar

Install

npm i scalable-rate-limiter

Weekly Downloads

4

Version

1.0.9

License

MIT

Last publish

Collaborators

  • brandonnutter
  • willyschu