cachly
Version:
Type-safe, production-ready in-memory cache system for Node.js and TypeScript with advanced features.
76 lines • 2.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RedisAdapter = void 0;
class RedisAdapter {
constructor(redisUrl) {
this.connected = false;
try {
const redis = require('redis');
this.client = redis.createClient(redisUrl);
this.client.connect().then(() => {
this.connected = true;
}).catch((error) => {
console.error('Failed to connect to Redis:', error);
});
}
catch (error) {
console.error('Redis not available:', error);
}
}
async get(key) {
if (!this.connected)
return undefined;
try {
const value = await this.client.get(key);
return value ? JSON.parse(value) : undefined;
}
catch (error) {
console.error('Redis get error:', error);
return undefined;
}
}
async set(key, value, ttl) {
if (!this.connected)
return;
try {
const serialized = JSON.stringify(value);
if (ttl) {
await this.client.setEx(key, ttl / 1000, serialized);
}
else {
await this.client.set(key, serialized);
}
}
catch (error) {
console.error('Redis set error:', error);
}
}
async delete(key) {
if (!this.connected)
return;
try {
await this.client.del(key);
}
catch (error) {
console.error('Redis delete error:', error);
}
}
async clear() {
if (!this.connected)
return;
try {
await this.client.flushDb();
}
catch (error) {
console.error('Redis clear error:', error);
}
}
async disconnect() {
if (this.connected) {
await this.client.quit();
this.connected = false;
}
}
}
exports.RedisAdapter = RedisAdapter;
//# sourceMappingURL=RedisAdapter.js.map