Объясните, как реализовать кеширование.

Вопрос проверяет понимание кеширования в 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 для простой интеграции и гибкой настройки.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Nest.js

Ключевые слова

Подпишись на Node.js Developer в телеграм