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,
});