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[]>