Files
Project/tools/redisDAL.js
2025-12-04 15:37:56 -07:00

46 lines
1.1 KiB
JavaScript

const { createClient } = require("redis");
class RedisDAL {
constructor() {
this.client = createClient({ url:"redis://my-redis:6379" });
this.client.on("error", (err) => {
console.error("Redis Client Error", err);
});
}
async connect() {
if (!this.client.isOpen) {
await this.client.connect();
console.log("Connected to Redis");
}
}
generateKey(prefix, params) {
const paramString = Object.entries(params)
.sort()
.map(([k, v]) => `${k}=${v}`)
.join("&");
return `${prefix}:${paramString}`;
}
async get(prefix, params) {
const key = this.generateKey(prefix, params);
const cached = await this.client.get(key);
if (cached) return JSON.parse(cached);
return null;
}
async set(prefix, params, data, ttl = 3600) {
const key = this.generateKey(prefix, params);
await this.client.set(key, JSON.stringify(data), { EX: ttl });
}
async del(prefix, params) {
const key = this.generateKey(prefix, params);
await this.client.del(key);
}
}
module.exports = new RedisDAL();