const redis = require('redis'); let client = null; let isConnected = false; // Инициализация Redis (опционально) async function initRedis() { try { if (process.env.REDIS_URL) { client = redis.createClient({ url: process.env.REDIS_URL }); client.on('error', (err) => { console.log('Redis Client Error', err); isConnected = false; }); client.on('connect', () => { console.log('✅ Redis подключен'); isConnected = true; }); await client.connect(); } else { console.log('⚠️ Redis URL не найден, кэширование отключено'); } } catch (error) { console.error('⚠️ Ошибка подключения Redis:', error); isConnected = false; } } // Получить значение async function get(key) { if (!isConnected || !client) return null; try { const value = await client.get(key); return value ? JSON.parse(value) : null; } catch (error) { console.error('Redis get error:', error); return null; } } // Установить значение с TTL async function set(key, value, ttl = 3600) { if (!isConnected || !client) return false; try { await client.setEx(key, ttl, JSON.stringify(value)); return true; } catch (error) { console.error('Redis set error:', error); return false; } } // Удалить значение async function del(key) { if (!isConnected || !client) return false; try { await client.del(key); return true; } catch (error) { console.error('Redis del error:', error); return false; } } // Очистить паттерн ключей async function clearPattern(pattern) { if (!isConnected || !client) return false; try { const keys = await client.keys(pattern); if (keys.length > 0) { await client.del(keys); } return true; } catch (error) { console.error('Redis clearPattern error:', error); return false; } } module.exports = { initRedis, get, set, del, clearPattern, isConnected: () => isConnected };