Skip to main content
Version: 1.x

RedisRateLimitStorage

RedisRateLimitStorage

Redis-backed storage with Lua scripts for atomic window operations.

Signature
class RedisRateLimitStorage implements RateLimitStorage {
public readonly redis: Redis;
constructor(redis?: Redis | RedisOptions)
get(key: string) => Promise<T | null>;
set(key: string, value: T, ttlMs?: number) => Promise<void>;
delete(key: string) => Promise<void>;
ttl(key: string) => Promise<number | null>;
expire(key: string, ttlMs: number) => Promise<void>;
zAdd(key: string, score: number, member: string) => Promise<void>;
zRemRangeByScore(key: string, min: number, max: number) => Promise<void>;
zCard(key: string) => Promise<number>;
zRangeByScore(key: string, min: number, max: number) => Promise<string[]>;
consumeFixedWindow(key: string, _limit: number, windowMs: number, _nowMs: number) => Promise<FixedWindowConsumeResult>;
consumeSlidingWindowLog(key: string, limit: number, windowMs: number, nowMs: number, member: string) => Promise<SlidingWindowConsumeResult>;
deleteByPrefix(prefix: string) => Promise<void>;
deleteByPattern(pattern: string) => Promise<void>;
keysByPrefix(prefix: string) => Promise<string[]>;
}

redis

property
Redis

constructor

method
(redis?: Redis | RedisOptions) => RedisRateLimitStorage

get

method
(key: string) => Promise<T | null>

Read a value from Redis and JSON-decode it.

set

method
(key: string, value: T, ttlMs?: number) => Promise<void>

Store a value in Redis with optional TTL.

delete

method
(key: string) => Promise<void>

Delete a key from Redis.

ttl

method
(key: string) => Promise<number | null>

Read the TTL for a key when present.

expire

method
(key: string, ttlMs: number) => Promise<void>

Update the TTL for an existing key.

zAdd

method
(key: string, score: number, member: string) => Promise<void>

Add a member to a sorted set with the given score.

zRemRangeByScore

method
(key: string, min: number, max: number) => Promise<void>

Remove sorted-set members with scores in the given range.

zCard

method
(key: string) => Promise<number>

Count members in a sorted set.

zRangeByScore

method
(key: string, min: number, max: number) => Promise<string[]>

Read sorted-set members in a score range.

consumeFixedWindow

method
(key: string, _limit: number, windowMs: number, _nowMs: number) => Promise<FixedWindowConsumeResult>

Atomically consume a fixed-window counter via Lua.

consumeSlidingWindowLog

method
(key: string, limit: number, windowMs: number, nowMs: number, member: string) => Promise<SlidingWindowConsumeResult>

Atomically consume a sliding-window log via Lua.

deleteByPrefix

method
(prefix: string) => Promise<void>

Delete keys with the given prefix.

deleteByPattern

method
(pattern: string) => Promise<void>

Delete keys matching a glob pattern using SCAN to avoid blocking Redis.

keysByPrefix

method
(prefix: string) => Promise<string[]>

List keys that match a prefix using SCAN.