/** * 메모리 캐싱 서비스 * 검색 결과 및 자주 사용되는 데이터 캐싱 */ /** One row in the search-result cache (opaque object shape per caller). */ export type CachedSearchHit = Record; /** Filters object serialized into search cache keys. */ export type SearchCacheFilters = Record; export interface CacheEntry { data: T; timestamp: number; ttl: number; accessCount: number; lastAccessed: number; } export interface CacheStats { hits: number; misses: number; totalRequests: number; hitRate: number; size: number; memoryUsage: number; } export declare class CacheService { private cache; private hits; private misses; private maxSize; private defaultTTL; constructor(maxSize?: number, defaultTTL?: number); /** * 캐시에서 데이터 가져오기 */ get(key: string): T | null; /** * 캐시에 데이터 저장 */ set(key: string, data: T, ttl?: number): void; /** * 캐시에서 데이터 삭제 */ delete(key: string): boolean; /** * 캐시 비우기 */ clear(): void; /** * 캐시에 데이터가 있는지 확인 */ has(key: string): boolean; /** * 캐시 통계 반환 */ getStats(): CacheStats; /** * LRU 방식으로 오래된 항목 제거 */ private evictLeastRecentlyUsed; /** * 만료된 항목 정리 */ cleanup(): number; /** * 캐시 키 생성 (검색용) */ generateSearchKey(query: string, filters?: SearchCacheFilters, limit?: number): string; /** * 캐시 키 생성 (메모리용) */ generateMemoryKey(memoryId: string): string; /** * 캐시 키 생성 (통계용) */ generateStatsKey(type: string): string; /** * 모든 키 반환 */ keys(): string[]; /** * 모든 값 반환 */ values(): T[]; /** * 모든 키-값 쌍 반환 */ entries(): [string, T][]; /** * 각 항목에 대해 콜백 실행 */ forEach(callback: (value: T, key: string) => void): void; /** * 가장 오래된 항목 반환 (LRU) */ getLeastRecentlyUsed(): T | null; /** * 캐시 크기 반환 */ size(): number; /** * 메모리 사용량 반환 */ getMemoryUsage(): number; /** * 가장 오래된 항목 반환 (타임스탬프 기준) */ getOldestEntry(): T | null; } /** * 검색 결과 캐시 서비스 */ export declare class SearchCacheService { private cache; private searchStats; private queryPatternCache; constructor(maxSize?: number, ttl?: number); /** * 검색 결과 캐시에서 가져오기 - 패턴 매칭 개선 */ getSearchResults(query: string, filters?: SearchCacheFilters, limit?: number): CachedSearchHit[] | null; /** * 검색 결과 캐시에 저장 - 다중 키 저장 */ setSearchResults(query: string, results: CachedSearchHit[], filters?: SearchCacheFilters, limit?: number, ttl?: number): void; /** * 검색 결과 캐시 무효화 */ invalidateSearchResults(pattern?: string): void; /** * 메모리 변경 시 관련 검색 결과 무효화 */ invalidateByMemoryId(_memoryId: string): void; /** * 쿼리 정규화 */ private normalizeQuery; /** * 유사한 결과 찾기 */ private findSimilarResults; /** * 쿼리 패턴 캐시 업데이트 */ private updateQueryPatternCache; /** * 캐시 통계 반환 */ getStats(): { searchStats: { [k: string]: number; }; topQueries: [string, number][]; patternCacheSize: number; hits: number; misses: number; totalRequests: number; hitRate: number; size: number; memoryUsage: number; }; /** * 캐시 정리 */ cleanup(): number; } /** * 임베딩 캐시 서비스 */ export declare class EmbeddingCacheService { private cache; private embeddingStats; constructor(maxSize?: number, ttl?: number); /** * 임베딩 캐시에서 가져오기 */ getEmbedding(text: string): number[] | null; /** * 임베딩 캐시에 저장 */ setEmbedding(text: string, embedding: number[], ttl?: number): void; /** * 텍스트 해시 생성 */ private hashText; /** * 캐시 통계 반환 */ getStats(): { embeddingStats: { [k: string]: number; }; topTexts: [string, number][]; hits: number; misses: number; totalRequests: number; hitRate: number; size: number; memoryUsage: number; }; /** * 캐시 정리 */ cleanup(): number; } //# sourceMappingURL=cache-service.d.ts.map