@gabrielpotter/lru-lfu-cache
Version:
62 lines (61 loc) • 1.69 kB
TypeScript
export type CacheStrategy = "LRU" | "LFU";
export declare class UnifiedCache<K, V> {
private capacity;
private maxMemory;
private strategy;
private cacheMap;
private lruList;
private freqMap;
private minFreq;
private mutex;
private currentMemory;
private absHit;
private absReq;
private relHit;
private relReq;
private hitResetCounter;
constructor(capacity: number, maxMemory: number, strategy?: CacheStrategy, hitReset?: number);
clear(params?: {
capacity?: number;
maxMemory?: number;
strategy?: CacheStrategy;
hitReset?: number;
}): Promise<void>;
get(key: K): Promise<V | undefined>;
getValueAndMeta(key: K): Promise<{
value: V;
meta: {
[key: string]: any;
} | undefined;
} | undefined>;
getByMeta(callback: (meta: {
[key: string]: any;
}) => boolean): Promise<V[]>;
getMeta(key: K): Promise<{
[key: string]: any;
} | undefined>;
test(key: K): Promise<boolean>;
set(key: K, value: V, meta?: {
[mkey: string]: any;
}): Promise<void>;
remove(key: K): Promise<void>;
removeByMeta(callback: (meta: {
[key: string]: any;
}) => boolean): Promise<void>;
private evict;
private updateFrequency;
private addToFreqMap;
private removeFreqMap;
private roughSizeOfObject;
getStats(): {
strategy: CacheStrategy;
currentNodes: number;
maxNodes: number;
currentMemory: number;
maxMemory: number;
absHitRate: number;
relHitRate: number;
};
private sizeSuppressorReplacer;
dump(): string;
}