6개의 프레임워크. 4개의 스토리지 백엔드. 1개의 import. 0개의 dependencies.
Source: Dev.to

어디서든 동일한 API
// Express
import { hitlimit } from '@joint-ops/hitlimit';
app.use(hitlimit({ limit: 100, window: '1m' }));
// Fastify
import { hitlimit } from '@joint-ops/hitlimit/fastify';
await app.register(hitlimit, { limit: 100, window: '1m' });
// Hono
import { hitlimit } from '@joint-ops/hitlimit/hono';
app.use(hitlimit({ limit: 100, window: '1m' }));
// NestJS
import { HitLimitModule, HitLimitGuard } from '@joint-ops/hitlimit/nest';
@Module({
imports: [HitLimitModule.register({ limit: 100, window: '1m' })],
providers: [{ provide: APP_GUARD, useClass: HitLimitGuard }],
})
export class AppModule {}
// Bun.serve
import { hitlimit } from '@joint-ops/hitlimit-bun';
Bun.serve({ fetch: hitlimit({ limit: 100, window: '1m' }, handler) });
// Elysia
import { hitlimit } from '@joint-ops/hitlimit-bun/elysia';
new Elysia().use(hitlimit({ limit: 100, window: '1m' })).listen(3000);
프레임워크를 내일 바꾸어도 레이트‑리밋 코드는 그대로 유지됩니다.
기본 제공되는 4가지 스토리지 백엔드
// Memory (default) – fastest, no setup
app.use(hitlimit({ limit: 100, window: '1m' }));
// SQLite – survives restarts
app.use(hitlimit({ store: sqliteStore({ path: './limits.db' }), limit: 100, window: '1m' }));
// Redis – distributed across instances
app.use(hitlimit({ store: redisStore({ url: process.env.REDIS_URL }), limit: 100, window: '1m' }));
// Postgres – use your existing database
app.use(hitlimit({ store: postgresStore({ pool }), limit: 100, window: '1m' }));
첫날엔 메모리를 사용하고, 규모가 커지면 Postgres나 Redis로 옮기세요. 다른 부분은 전혀 바뀌지 않습니다.
v1.2.0 신규 기능: PostgreSQL 스토어
import { postgresStore } from '@joint-ops/hitlimit/stores/postgres';
import { Pool } from 'pg';
const pool = new Pool({ connectionString: process.env.DATABASE_URL });
app.use(
hitlimit({
limit: 100,
window: '1m',
store: postgresStore({ pool }),
})
);
요청당 하나의 원자적 쿼리만 실행됩니다. 레이스 컨디션이 없습니다. 첫 실행 시 테이블이 자동으로 생성됩니다. 이름이 지정된 준비된 문장은 30‑40 % 낮은 레이턴시를 제공합니다. 관리할 새로운 인프라가 필요하지 않습니다.
빠름
Node.js (10K unique IPs)
Memory 3.16M ops/s 316ns
SQLite 352K ops/s 2.8µs
Redis 6.7K ops/s 149µs
Postgres 3.0K ops/s 336µs
Bun (10K unique IPs)
Memory 8.32M ops/s 120ns
bun:sqlite 325K ops/s 3.1µs
Redis 6.7K ops/s 148µs
Postgres 3.7K ops/s 273µs
피크: 12.38 M ops/s (Bun) / 4.83 M ops/s (Node.js).
모든 벤치마크는 오픈 소스입니다: .
단순 카운터 그 이상
- 계층형 제한 – 무료, 프로, 엔터프라이즈 플랜용.
- 자동 차단 – N 번 위반하면 반복 위반자를 차단.
- 그룹 제한 – 팀 또는 조직 별 할당량.
- 스킵 규칙 – 헬스 체크, 관리자, 내부 라우트 제외.
- 사람이 읽기 쉬운 윈도우 – 밀리초 대신
'15m','1h','1d'와 같이 지정.
모두 기본 제공이며, 의존성은 전혀 없습니다.
시작하기
npm install @joint-ops/hitlimit # Node.js
bun add @joint-ops/hitlimit-bun # Bun
Docs | npm | Release notes
시간을 절약한다면 별표를 눌러 주세요.