98 lines
2.1 KiB
JavaScript
98 lines
2.1 KiB
JavaScript
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
|
||
};
|
||
|