Rate Limiting
Rate limiting using Upstash Redis to prevent abuse and ensure fair usage of resources.
This template uses Upstash Redis for rate limiting. For more information, go to Upstash Redis docs
Setup
Prerequisites
🔄
Upstash Redis
Active Upstash Redis account
🔌
Connection Details
Redis REST URL and token
⚙️
Environment Setup
Configured .env.local file
Environment Variables
Terminal
Implementation
Redis Client Setup
Configure the Upstash Redis client in lib/upstash.ts:
lib/upstash.ts
TYPESCRIPT
Rate Limiter Configuration
Set up rate limiting with sliding window algorithm:
TYPESCRIPT
Usage Examples
Server Action Rate Limiting
Implementing rate limiting in server actions:
TYPESCRIPT
API Route Rate Limiting
Protecting API routes with rate limiting:
TYPESCRIPT
Common Use Cases
🖼️
Image Uploads
Limit the number of image uploads per user per minute
🔐
Authentication
Prevent brute force attacks on authentication endpoints
🔌
API Endpoints
Control access rates to public and private API endpoints
📝
Form Submissions
Prevent spam by limiting form submission frequency
Best Practices
Implementation
- 1Use unique identifiers per action
- 2Include user ID in rate limit keys
- 3Set appropriate time windows
- 4Handle rate limit errors gracefully
Security
- 1Implement rate limiting early in request pipeline
- 2Use different limits for different actions
- 3Monitor rate limit usage
- 4Provide clear feedback to users