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[]>;
}
- Implements:
RateLimitStorage
redis
property
Redisconstructor
method
(redis?: Redis | RedisOptions) => RedisRateLimitStorageget
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.