@gramio/storage-redis
Version:
Redis Storage for GramIO
28 lines (25 loc) • 780 B
JavaScript
import { Redis } from 'ioredis';
function redisStorage(optionsRaw = {}) {
const isInstanceInOption = optionsRaw instanceof Redis;
const options = isInstanceInOption ? {} : optionsRaw;
const storage = isInstanceInOption ? optionsRaw : new Redis(options);
return {
async get(key) {
const data = await storage.get(key);
return data ? JSON.parse(data) : void 0;
},
async has(key) {
return !!await storage.get(key);
},
async set(key, value) {
const data = JSON.stringify(value);
if (options.$ttl) await storage.setex(key, options.$ttl, data);
else await storage.set(key, data);
},
async delete(key) {
const result = await storage.del(key);
return result === 1;
}
};
}
export { redisStorage };