UNPKG

@tasolutions/express-core

Version:
102 lines (90 loc) 3.35 kB
'use strict'; const { Redis } = require('ioredis'); const { redisInfo } = require('../config'); // Biến để lưu trữ instance Redis let redisInstance; class RedisService { constructor() { if (!redisInstance) { // Chỉ khởi tạo Redis nếu enable là true if (redisInfo.enable === 'true') { const options = { host: redisInfo.host, port: Number(redisInfo.port), password: redisInfo.pass, db: Number(redisInfo.db) || 0, }; console.log('[RedisService] options:', options); redisInstance = new Redis(options); // Kiểm tra kết nối redisInstance.on('connect', () => { console.log('Connected to Redis'); }); redisInstance.on('error', (err) => { console.error('Redis error:', err); }); } else { console.log('[RedisService] Redis is disabled. Cache will not be used.'); } } } // Lấy client Redis get client() { return redisInstance; // Trả về instance Redis đã khởi tạo } // Các phương thức khác (ping, set, get, del, exists) như đã mô tả ở trên async ping() { return redisInstance ? await redisInstance.ping() : null; } async set(key, value, ttl = 3600) { if (!redisInstance) { console.warn('Redis client is not initialized. Set request ignored.'); return; // Redis không được kích hoạt } try { await redisInstance.set(key, JSON.stringify(value), 'EX', ttl); console.log(`Set key ${key} in Redis with TTL ${ttl} seconds`); } catch (error) { console.error(`Failed to set key ${key} in Redis`, error); } } async get(key) { if (!redisInstance) { console.warn('Redis client is not initialized. Get request ignored.'); return null; // Redis không được kích hoạt } try { const data = await redisInstance.get(key); return data ? JSON.parse(data) : null; } catch (error) { console.error(`Failed to get key ${key} from Redis`, error); return null; } } async del(key) { if (!redisInstance) { console.warn('Redis client is not initialized. Delete request ignored.'); return 0; // Redis không được kích hoạt } try { return await redisInstance.del(key); } catch (error) { console.error(`Failed to delete key ${key} from Redis`, error); return 0; } } async exists(key) { if (!redisInstance) { console.warn('Redis client is not initialized. Exists check ignored.'); return 0; // Redis không được kích hoạt } try { return await redisInstance.exists(key); } catch (error) { console.error(`Failed to check existence of key ${key} in Redis`, error); return 0; } } } // Xuất module như một instance duy nhất module.exports = new RedisService();