import redis from '../config/redis'; import { logger } from '../utils/logger'; export class CacheService { async get(key: string): Promise { try { const data = await redis.get(key); return data ? JSON.parse(data) : null; } catch (err) { logger.error(`Cache get error for key ${key}:`, err); return null; } } async set(key: string, value: unknown, ttlSeconds: number): Promise { try { await redis.setex(key, ttlSeconds, JSON.stringify(value)); } catch (err) { logger.error(`Cache set error for key ${key}:`, err); } } async del(key: string): Promise { try { await redis.del(key); } catch (err) { logger.error(`Cache del error for key ${key}:`, err); } } async delPattern(pattern: string): Promise { try { const keys = await redis.keys(pattern); if (keys.length > 0) { await redis.del(...keys); } } catch (err) { logger.error(`Cache delPattern error for ${pattern}:`, err); } } async flush(): Promise { try { await redis.flushdb(); } catch (err) { logger.error('Cache flush error:', err); } } } export default new CacheService();