import fp from 'fastify-plugin'; import Redis from 'ioredis'; // Fastify plugin for ioredis async function redisPlugin(fastify) { const redis = new Redis({ host: process.env.REDIS_HOST, port: process.env.REDIS_PORT, }); console.log(`Attempting to connect to redis@${process.env.REDIS_HOST}:${process.env.REDIS_PORT} ...`) redis.on('connect', () => { console.log(`Connection success to Redis at: ${new Date().toISOString()}`); }); // Attach redis client to Fastify instance fastify.decorate('redis', redis); // Close redis connection on server shutdown fastify.addHook('onClose', (app, done) => { app.redis.quit(); done(); }); } // Export as a fastify plugin export default fp(redisPlugin);