Installation
Get started with bunlimit
Installation
Install bunlimit using your package manager:
bun add bunlimitPrerequisites
bunlimit requires:
- Bun runtime (or Node.js with appropriate adapter)
- Redis server (version 7.2+)
Running Redis
Using Docker
The easiest way to run Redis locally:
docker run -d --name redis -p 6379:6379 redis:latestUsing Docker Compose
Create a docker-compose.yml:
version: '3.8'
services:
redis:
image: redis:7.2-alpine
ports:
- '6379:6379'
volumes:
- redis-data:/data
command: redis-server --appendonly yes
volumes:
redis-data:Then run:
docker-compose up -dBasic Setup
With Bun Redis
import { RedisClient } from 'bun'
import { Ratelimit, fixedWindow } from 'bunlimit'
const redis = new RedisClient('redis://localhost:6379')
const ratelimit = new Ratelimit({
redis,
limiter: fixedWindow(10, 60),
})With ioredis
import Redis from 'ioredis'
import { Ratelimit, IoRedisAdapter, fixedWindow } from 'bunlimit'
const redis = new Redis()
const ratelimit = new Ratelimit({
adapter: new IoRedisAdapter(redis),
limiter: fixedWindow(10, 60),
})With node-redis
import { createClient } from 'redis'
import { Ratelimit, NodeRedisAdapter, fixedWindow } from 'bunlimit'
const redis = createClient()
await redis.connect()
const ratelimit = new Ratelimit({
adapter: new NodeRedisAdapter(redis),
limiter: fixedWindow(10, 60),
})With Deno KV
import { openKv } from '@deno/kv'
import { Ratelimit, DenoKvAdapter, fixedWindow } from 'bunlimit'
const kv = await openKv('http://localhost:4512')
const ratelimit = new Ratelimit({
adapter: new DenoKvAdapter(kv),
limiter: fixedWindow(10, 60),
})Environment Variables
You can configure Redis connection using environment variables:
REDIS_URL=redis://localhost:6379Then in your code:
const redis = new RedisClient(process.env.REDIS_URL)Verification
Test your setup:
const result = await ratelimit.limit('test-user')
console.log('Rate limit working:', result.success)