feat: add Redis plugin

Made-with: Cursor
This commit is contained in:
Anton
2026-03-04 13:36:35 +03:00
parent 9ffd59eb3e
commit 019bf875ff

32
src/plugins/redis.ts Normal file
View File

@@ -0,0 +1,32 @@
import { FastifyInstance, FastifyPluginAsync } from 'fastify';
import { Redis } from 'ioredis';
import fp from 'fastify-plugin';
import { env } from '../config/env.js';
declare module 'fastify' {
interface FastifyInstance {
redis: Redis;
}
}
const redisPlugin: FastifyPluginAsync = async (app: FastifyInstance) => {
const redis = new Redis(env.REDIS_URL, {
maxRetriesPerRequest: 3,
retryStrategy(times: number) {
const delay = Math.min(times * 100, 3000);
return delay;
},
});
redis.on('error', (err: Error) => {
app.log.error({ err }, 'Redis connection error');
});
app.decorate('redis', redis);
app.addHook('onClose', async () => {
await redis.quit();
});
};
export default fp(redisPlugin, { name: 'redis' });