UNPKG

@codai/cbd

Version:

Codai Better Database - High-Performance Vector Memory System with HPKV-inspired architecture and MCP server

129 lines 3.17 kB
/** * Key-Value Storage Engine - Redis-compatible key-value store * Part of CBD Universal Database Phase 3 */ import { EventEmitter } from 'events'; export interface KeyValuePair { key: string; value: any; type: 'string' | 'number' | 'boolean' | 'object' | 'array'; ttl?: number; createdAt: Date; updatedAt: Date; expiresAt?: Date; } export interface KeyValueOptions { ttl?: number; nx?: boolean; xx?: boolean; } export interface KeyValueStats { totalKeys: number; memoryUsage: number; hitRate: number; missRate: number; expiredKeys: number; keyTypes: Map<string, number>; averageKeySize: number; averageValueSize: number; } export interface ScanResult { cursor: number; keys: string[]; } export declare class KeyValueStorageEngine extends EventEmitter { private store; private expirationIndex; private stats; constructor(); initialize(): Promise<void>; /** * Set a key-value pair */ set(key: string, value: any, options?: KeyValueOptions): Promise<boolean>; /** * Get a value by key */ get(key: string): Promise<any>; /** * Delete a key */ delete(key: string): Promise<boolean>; /** * Check if key exists */ exists(key: string): Promise<boolean>; /** * Set TTL for a key */ expire(key: string, ttl: number): Promise<boolean>; /** * Get TTL for a key */ ttl(key: string): Promise<number>; /** * Get multiple keys */ mget(keys: string[]): Promise<(any | null)[]>; /** * Set multiple key-value pairs */ mset(pairs: Array<{ key: string; value: any; options?: KeyValueOptions; }>): Promise<boolean>; /** * Increment a numeric value */ incr(key: string, by?: number): Promise<number>; /** * Decrement a numeric value */ decr(key: string, by?: number): Promise<number>; /** * Scan keys with pattern matching */ scan(cursor?: number, pattern?: string, count?: number): Promise<ScanResult>; /** * Get all keys matching a pattern */ keys(pattern?: string): Promise<string[]>; /** * Get random key */ randomKey(): Promise<string | null>; /** * Rename a key */ rename(oldKey: string, newKey: string): Promise<boolean>; /** * Get type of value at key */ type(key: string): Promise<string | null>; /** * Flush all keys */ flushAll(): Promise<void>; /** * Get database statistics */ getKeyValueStats(): Promise<KeyValueStats>; /** * Get all keys (use with caution on large datasets) */ getAllKeys(): Promise<string[]>; /** * Get key-value pair info */ info(key: string): Promise<KeyValuePair | null>; private getValueType; private addToExpirationIndex; private removeFromExpirationIndex; private getRemainingTTL; private patternToRegex; private estimateValueSize; private startExpirationCleanup; private cleanupExpiredKeys; } //# sourceMappingURL=KeyValueStorageEngine.d.ts.map