Kembali ke Blog
Backend Development·1 menit baca·25 Januari 2026

Membuat Rate Limiter untuk API dengan Redis

Implementasi rate limiting di Node.js menggunakan Redis untuk melindungi API dari abuse dan overload.

TH
Tomi Hartanto·Senior Software Engineer

Mengapa Perlu Rate Limiting?

Tanpa rate limiting, API bisa di-abuse oleh user atau bot yang mengirim request secara massal. Ini bisa menyebabkan server down dan dampak ke user lain.

Strategi Rate Limiting

1. Fixed Window

Membatasi jumlah request dalam window waktu tetap (misal 100 request per menit). Simple tapi bisa burst di boundary window.

2. Sliding Window Log

Menyimpan timestamp setiap request. Lebih akurat tapi memory intensive.

3. Token Bucket

Token diisi ulang secara periodik. Setiap request mengurangi token. Fleksibel untuk burst traffic.

Implementasi dengan Redis

import Redis from 'ioredis';

const redis = new Redis(process.env.REDIS_URL);

async function rateLimit(key: string, limit: number, windowMs: number) {
  const now = Date.now();
  const windowStart = now - windowMs;
  
  const pipeline = redis.pipeline();
  pipeline.zremrangebyscore(key, 0, windowStart);
  pipeline.zadd(key, now, `${now}-${Math.random()}`);
  pipeline.zcard(key);
  pipeline.pexpire(key, windowMs);
  
  const results = await pipeline.exec();
  const count = results?.[2]?.[1] as number;
  
  return count <= limit;
}

Kesimpulan

Rate limiting adalah pertahanan dasar yang wajib ada di setiap API. Redis membuat implementasinya efisien dan scalable.

TH

Tomi Hartanto

Senior Software Engineer

Backend developer dengan 8+ tahun pengalaman membangun sistem scalable. Menulis tentang arsitektur backend, database, dan DevOps.