import { connect, Redis, RedisConnectOptions, RedisValue, } from "https://deno.land/x/redis@v0.31.0/mod.ts"; const REDIS_HOST = Deno.env.get("REDIS_HOST"); const REDIS_PASS = Deno.env.get("REDIS_PASS") || ""; const REDIS_PORT = Deno.env.get("REDIS_PORT"); async function createCache(): Promise | Redis> { if (REDIS_HOST) { const conf: RedisConnectOptions = { hostname: REDIS_HOST, port: REDIS_PORT || 6379, }; if (REDIS_PASS) { conf.password = REDIS_PASS; } const client = await connect(conf); console.log("Connected to redis"); return client; } return new Map(); } const cache = await createCache(); export async function get(id: string, binary = false) { if (binary && !(cache instanceof Map)) { return await cache.sendCommand("GET", [id], { returnUint8Arrays: true, }) as T; } return await cache.get(id) as T; } export async function set(id: string, content: T) { return await cache.set(id, content); }