UNPKG

@opengis/fastify-table

Version:

core-plugins

43 lines (42 loc) 1.66 kB
import { Redis } from "ioredis"; import config from "../../../../config.js"; import logger from "../../logger/getLogger.js"; import redisClients from "./redisClients.js"; config.ready = config.ready || {}; function getRedis({ db, host, port, closeClient = false, retryStrategy = (times) => Math.min(times * 500, 5000), enableOfflineQueue = true, lazyConnect = true, connectTimeout = 2000, maxRetriesPerRequest = 1, } = { db: 0 }) { if (!config.redis && !host) return null; const key = host || port ? [host, port, db].join("-") : db; // try to reconnect after connection error / disconnect if (redisClients[key]?.status === "end" && typeof redisClients[key].connect === "function") { redisClients[key].connect(); } if (redisClients[key]) { return redisClients[key]; } const redisConfig = { db, prefix: `${config.pg?.database || "db"}:`, host: host || config.redis?.host || "127.0.0.1", port: port || config.redis?.port || 6379, // Redis port family: 4, // 4 (IPv4) or 6 (IPv6) closeClient, retryStrategy, enableOfflineQueue, lazyConnect, connectTimeout, maxRetriesPerRequest, }; redisClients[key] = new Redis(redisConfig); redisClients[key].on("ready", () => { config.ready[`redis:${key}`] = true; }); redisClients[key].on("error", (err) => { console.warn("⚠️ Ignored redis error:", err.message); logger.file("redis", { error: err.toString() }); }); console.log("redis connected", db, host, port); return redisClients[key]; } export default getRedis;