Redis Store
The Redis store enables distributed rate limiting across multiple server instances. Essential for horizontally scaled applications.
Installation
The Redis store requires ioredis as a peer dependency:
npm install ioredis pnpm add ioredis yarn add ioredis bun add ioredis Usage
import { hitlimit } from '@joint-ops/hitlimit'
import { redisStore } from '@joint-ops/hitlimit/stores/redis'
app.use(hitlimit({
limit: 100,
window: '1m',
store: redisStore({
url: 'redis://localhost:6379'
})
})) Options
| Option | Type | Default | Description |
|---|---|---|---|
url | string | - | Redis connection URL |
client | Redis | - | Existing ioredis client instance |
prefix | string | 'hitlimit:' | Key prefix for rate limit entries |
Connection Options
Connect using a URL:
redisStore({
url: 'redis://:password@hostname:6379/0'
}) Or use an existing client:
import Redis from 'ioredis'
const redis = new Redis({
host: 'localhost',
port: 6379,
password: 'secret',
db: 0
})
redisStore({ client: redis }) Cluster Support
import Redis from 'ioredis'
const cluster = new Redis.Cluster([
{ host: 'node1', port: 6379 },
{ host: 'node2', port: 6379 },
{ host: 'node3', port: 6379 }
])
redisStore({ client: cluster }) Characteristics
- Speed: Fast with low latency
- Persistence: Configurable via Redis settings
- Scalability: Shared across all server instances
- Atomic: Uses Lua scripts for race-condition-free increments
When to Use
- Multi-server/container deployments
- Kubernetes or Docker Swarm clusters
- High-traffic applications
- When consistent rate limiting across instances is required