/** * Cache layer: optional LRU in front of storage. Invalidates on write. */ /** Cached value per data type; collection maps are keyed by the latin1 form of the field or member. */ export interface CacheValues { string: Buffer; hash: Map; set: Map; list: Buffer[]; zset: Map; } export type CacheKind = keyof CacheValues; export type CacheEntry = { [K in CacheKind]: { kind: K; version: number; expiresAt: number | bigint | null; value: CacheValues[K]; }; }[CacheKind]; export interface CacheOptions { enabled?: boolean; maxEntries?: number; maxBytes?: number; maxHashFields?: number; maxHashBytes?: number; maxSetMembers?: number; maxSetBytes?: number; maxListItems?: number; maxListBytes?: number; maxZsetMembers?: number; maxZsetBytes?: number; } export declare function createCache(opts?: CacheOptions): { get(key: string): CacheEntry | null; set(key: string, kind: K, value: CacheValues[K], version: number, expiresAt: number | bigint | null): void; invalidate(key: string): void; clear(): void; limits: Readonly<{ maxHashFields: number; maxHashBytes: number; maxSetMembers: number; maxSetBytes: number; maxListItems: number; maxListBytes: number; maxZsetMembers: number; maxZsetBytes: number; }>; readonly stats: { entries: number; bytes: number; hits: number; misses: number; hitRatio: number; enabled: boolean; }; }; export type Cache = ReturnType;