Объясните, как реализовать кеширование.
Вопрос проверяет понимание кеширования в NestJS, включая использование встроенного модуля кеширования и практические подходы к оптимизации производительности.
Короткий ответ
NestJS предоставляет CacheModule для реализации кеширования. Оно поддерживает разные хранилища (например, in-memory или Redis). Кеширование может быть настроено для хранения результатов методов или HTTP-ответов с использованием декораторов или перехватчиков.
Длинный ответ
1. Установка и настройка:
Установите пакет для кеширования:
npm install --save @nestjs/cache-manager cache-managerПодключите CacheModule в модуле приложения:
import { Module, CacheModule } from '@nestjs/common';
@Module({
imports: [
CacheModule.register({
ttl: 5, // время жизни в секундах
max: 10, // максимальное количество элементов
}),
],
})
export class AppModule {}2. Кеширование методом:
Используйте декоратор @Cacheable() для кеширования результатов методов:
import { Injectable } from '@nestjs/common';
import { Cacheable } from '@nestjs/cache-manager';
@Injectable()
export class AppService {
@Cacheable()
getHello(): string {
return 'Hello World!';
}
}3. Кеширование HTTP-ответов:
Используйте CacheInterceptor для кеширования маршрутов:
import { Controller, Get, UseInterceptors } from '@nestjs/common';
import { CacheInterceptor } from '@nestjs/cache-manager';
@Controller()
@UseInterceptors(CacheInterceptor)
export class AppController {
@Get()
getHello(): string {
return 'Hello World!';
}
}4. Дополнительные аспекты:
Подключение Redis:
Для использования Redis установите:
npm install cache-manager-redis-storeНастройте CacheModule с использованием Redis:
import * as redisStore from 'cache-manager-redis-store';
CacheModule.register({
store: redisStore,
host: 'localhost',
port: 6379,
});
Кеширование улучшает производительность, снижает нагрузку на сервер и сокращает время отклика. Используйте встроенные инструменты NestJS для простой интеграции и гибкой настройки.