Skip to main content
Version: 1.x

RateLimitStorage

RateLimitStorage

Storage contract for rate limit state, with optional optimization hooks.

Signature
interface RateLimitStorage {
get<T = unknown>(key: string): Promise<T | null>;
set<T = unknown>(key: string, value: T, ttlMs?: number): Promise<void>;
delete(key: string): Promise<void>;
incr?(key: string, ttlMs: number): Promise<FixedWindowConsumeResult>;
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[]>;
}

get

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

set

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

delete

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

incr

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

ttl

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

expire

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

zAdd

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

zRemRangeByScore

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

zCard

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

zRangeByScore

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

consumeFixedWindow

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

consumeSlidingWindowLog

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

deleteByPrefix

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

deleteByPattern

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

keysByPrefix

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