Является ли медленная, повторяющаяся выборка данных причиной низкой производительности вашего приложения? Попробуйте кэшировать, чтобы решить проблему.
Создание быстрых и надежных веб-приложений важнее, чем когда-либо, в современном цифровом ландшафте. Пользователи возлагают большие надежды на производительность веб-сайта. Медленная загрузка или простои могут привести к разочарованию клиентов и ущербу для репутации.
Одним из способов создания быстрых и надежных веб-приложений является использование кэширования. Существуют различные типы кешей, которые вы можете реализовать в своем приложении, включая кеш в памяти, кеш браузера, кеш базы данных и кеш CDN.
Что такое кэширование и чем отличается кэширование в памяти? Как повысить производительность приложения Nest.js с помощью кэширования в памяти?
Что такое кэширование?
Кэширование — это процесс хранения часто используемых данных во временном расположении для повышения производительности приложения или системы. Кэшированные данные могут быть быстро извлечены и предоставлены пользователю без необходимости повторного извлечения их из исходного источника.
Приложения используют кэширование для более быстрой и эффективной доставки контента, что приводит к улучшению взаимодействия с пользователем и снижению нагрузки на базовые системы. К наиболее распространенным типам кэширования относятся кэширование в памяти, Кэширование CDN, кэширование браузера и кэширование базы данных.
Что такое кэширование в памяти?
Кэширование в памяти — это тип кэширования, при котором приложение временно сохраняет часто используемые данные в памяти сервера. Вместо дорогостоящих вызовов базы данных каждый раз, когда приложение обрабатывает запрос на доступ к данным, оно может извлекать эти данные из памяти.
Кэширование данных в памяти означает, что приложение быстрее обращается к данным, что приводит к повышению производительности.
Как реализовать кэширование в памяти в приложении Nest.js
Nest.js имеет встроенную поддержку кэширования с использованием таких драйверов, как Redis, Memcached и многих других. Однако для простоты понимания в этой статье используется встроенный модуль кэширования памяти, предоставляемый Nest.js.
В этом разделе предполагается, что у вас уже есть приложение Nest.js, созданное с помощью команды Nest CLI: вложить новое [имя приложения]. Чтобы реализовать кэш в памяти в конечной точке, у вас уже должны быть файлы модулей, служб и контроллеров, или вы должны сгенерировать их с помощью гнездогенерировать команда. Вы можете узнать больше о гнездо генерировать в Документация интерфейса командной строки Nest.
Первым шагом для реализации кэша в памяти является импорт КэшМодуль от @nestjs/общий в модуль вашей конечной точки, как показано ниже:
// пример.module.ts
Импортировать {Модуль, CacheModule} от'@nestjs/общий';@Модуль({
импортирует: [CacheModule.register()],
})
экспортсорт Модуль Примера {}
Далее необходимо импортировать КэшСервис и внедрить его в службу Nest.js, которая взаимодействует с база данных, такая как MongoDB. Вы можете увидеть, как это делается в следующем примере кода:
// пример.service.ts
Импортировать { Вводимый, CacheService } от'@nestjs/общий';@Инъекционный()
экспортсорт ПримерСервис {
конструктор(частный только для чтения cacheService: CacheService) {}асинхронный получить данные(): Обещать<любой> {
константа кешКлюч = 'мои данные';
позволять данные = Ждитеэтот.cacheService.get(cacheKey);если (!данные) {
// получаем данные из базы данных или API
данные = Ждитеэтот.fetchData();// кешируем данные для будущего использования
Ждитеэтот.cacheService.set (cacheKey, данные, {ttl: 60 });
}возвращаться данные;
}
частныйасинхронный выборка данных(): Обещать<любой> {
// получаем данные из базы данных
}
}
В приведенном выше примере кода ПримерСервис использует КэшСервис как зависимость. получить данные метод проверяет наличие данных в кеше с помощью ключа (cacheKey), если данных нет в кеше, он извлекает их из базы данных и кэширует для последующего использования.
КэшСервис имеет набор метод, который принимает объект в качестве аргумента. В этом случае вы можете видеть, как значение { ттл: 60 } устанавливает время жизни на 60 секунд. Это означает, что служба автоматически удалит кэшированные данные через одну минуту.
Некоторые важные преимущества кэширования в памяти включают следующее:
- Улучшенная масштабируемость: Кэширование в памяти может помочь улучшить масштабируемость приложений за счет снижения нагрузки на базовый источник данных.
- Более быстрое время отклика: Кэширование часто используемых данных в памяти сокращает время, необходимое для извлечения данных, что приводит к более быстрому времени отклика.
- Лучший пользовательский опыт: Более быстрое время отклика и улучшенная масштабируемость могут помочь улучшить взаимодействие с пользователем за счет сокращения времени ожидания и повышения общей производительности приложения.
- Снижение затрат: Снижая нагрузку на источник данных, кэширование в памяти может помочь снизить стоимость запуска приложения.
Оптимизация приложений Nest.js с кэшированием в памяти
Кэширование в памяти — очень эффективный способ повысить общую производительность приложения. Вы узнали, как реализовать кеш в памяти в Nest.js и как это улучшает масштабируемость и удобство работы пользователей. Это также может улучшить время отклика и снизить затраты на запуск вашего приложения.
Попробуйте применить концепцию кэширования на практике при создании следующего API или приложения Nest.js.