Хранилище Redis для кэша в Nest
Несколько экземпляров приложения на NodeJS не делят память одного процесса. Запись, сделанная на одном узле, на другом не видна, пока кэш не вынести наружу.
cache-manager опирается на Keyv,
для Redis ставят пакет
@keyv/redis и подключают
хранилище через асинхронную
регистрацию модуля. Адрес сервера
передают в фабрику строкой подключения.
Покажем на примере постов:
npm install @keyv/redis cacheable
Укажем Redis как единственное хранилище в настройке модуля:
import { Module } from '@nestjs/common';
import { CacheModule } from '@nestjs/cache-manager';
import { createKeyv } from '@keyv/redis';
import { PostController } from './post.controller.js';
@Module({
imports: [
CacheModule.registerAsync({
useFactory: async () => ({
stores: [createKeyv('redis://localhost:6379')],
}),
}),
],
controllers: [PostController],
})
export class AppModule {}
Подключите кэш через Redis
в корневом модуле с
WorkerController.