@omariyassine/redis-ratelimiter
v1.2.4
Published
High-performance, clock-skew resistant Redis rate limiters for TypeScript and Node.js
Readme
@omariyassine/redis-ratelimiter
High-performance, clock-skew resistant Redis rate limiters for TypeScript and Node.js.
Quick Start
import Redis from "ioredis";
import { Ratelimit } from "@omariyassine/redis-ratelimiter";
import { ioredisAdapter } from "@omariyassine/redis-ratelimiter/adapters";
import { slidingWindow } from "@omariyassine/redis-ratelimiter/limiters";
const ratelimit = new Ratelimit({
redis: ioredisAdapter(new Redis(process.env.REDIS_URL!)),
limiter: slidingWindow(10, "10s"),
ephemeralCache: true,
});
const { success, remaining, reset } = await ratelimit.limit("user_123");Subpath Exports
@omariyassine/redis-ratelimiter—Ratelimit,RatelimitConfig,RatelimitResponse,RateLimitInfo,RedisClient@omariyassine/redis-ratelimiter/adapters—ioredisAdapter,nodeRedisAdapter@omariyassine/redis-ratelimiter/limiters—fixedWindow,slidingWindow,tokenBucket,slidingLog,lockout
Key Methods
limit(id, cost?)/record(id, cost?): Check and consume rate limit.getRemaining(id): Read-only inspection of remaining quota.isBlocked(id): Returns boolean indicating if identifier is blocked.block(id, duration): Manually force-block an identifier.clearCache(id?): Flush local ephemeral block cache.reset(id): Clear rate limit state in Redis and local cache.Ratelimit.getHeaders(res): Generate HTTPX-RateLimit-*headers.
License
MIT © 2026 Yassine
