Skip to main content

Storage

This library supports multiple storage backends to store rate-limiting data.

  • In-memory
  • Redis
  • MongoDB

In-memory

  • The default option, best for simple use cases.
  • Not suitable for distributed or multi-instance deployments.

Example usage:

import { expressRateLimiter } from "@radioac7iv/rate-limiter";

const rateLimit = expressRateLimiter({
limitOptions: () => {
return { max: 5, window: 10 };
},
});

Redis

  • Ideal for distributed systems and multi-instance applications.
  • Requires a configured Redis Client

Example usage:

import { expressRateLimiter } from "@radioac7iv/rate-limiter";
import { createClient } from "redis";

const redisClient = createClient({ url: "redis://localhost:6379" });
await redisClient.connect();

const rateLimit = expressRateLimiter({
limitOptions: () => {
return { max: 5, window: 10 };
},
store: "redis",
externalStore: redisClient,
});

MongoDB

  • Suitable for distributed systems and multi-instance applications.
  • Requires a configured mongo client.

Example usage:

import { expressRateLimiter } from "@radioac7iv/rate-limiter";
import { MongoClient } from "mongodb";

const mongoClient = new MongoClient("mongodb://localhost:27017");
await mongoClient.connect();
const db = mongoClient.db("rate-limiter");

const rateLimit = expressRateLimiter({
limitOptions: () => {
return { max: 5, window: 10 };
},
store: "mongodb",
externalStore: mongoClient,
});