@kasifraza/api-rate-limiter
v1.0.1
Published
Redis-backed rate limiter for NestJS with sliding window and per-user/IP limits
Maintainers
Readme
@kasifraza/api-rate-limiter
Redis-backed rate limiter for NestJS with sliding window and per-user/IP limits.
Installation
npm install @kasifraza/api-rate-limiter ioredisUsage
Module Registration
import { RateLimitModule } from '@kasifraza/api-rate-limiter';
@Module({
imports: [
RateLimitModule.register({
host: 'localhost',
port: 6379,
password: 'optional',
keyPrefix: 'rl',
}),
],
})
export class AppModule {}Apply Rate Limiting
import { RateLimit, RateLimitGuard } from '@kasifraza/api-rate-limiter';
import { UseGuards, Controller, Get } from '@nestjs/common';
@Controller('api')
export class ApiController {
@Get('data')
@UseGuards(RateLimitGuard)
@RateLimit({ limit: 100, window: 60 }) // 100 requests per 60 seconds
getData() {
return { data: 'ok' };
}
}Custom Key
@RateLimit({ limit: 10, window: 60, key: 'user.id' })Algorithm
Uses a sliding window algorithm with Redis sorted sets (ZADD, ZREMRANGEBYSCORE, ZCARD) for accurate per-window counting.
License
MIT
