Кэши и Redis
Важно быстро реагировать на запросы пользователей в приложениях. Когда веб-сайт медленный, посетители быстро разочаровываются и покидают ваш сайт, возможно, чтобы посетить ваших конкурентов. Как создать приложение, которое реагирует быстро, даже если запрашивается сложный набор данных? Одним из способов ускорения приложения является использование кэша.
Представьте, что вы работаете в розничном магазине оборудования для активного отдыха. Новое веб-приложение находится в разработке, и несколько микрослужб подходят к их первому выпуску, но некоторые страницы загружаются слишком медленно. Вы хотите найти способ повысить их производительность.
В этом уроке вы узнаете, как кэширование может помочь повысить скорость веб-приложения.
Что такое Redis?
Redis — это хранилище сведений с открытым исходным кодом в памяти. Его название сокращено от сервера удаленного словаря. Возможно, наиболее важной особенностью Redis является его низкая задержка как для операций чтения, так и записи, которые она достигает в силу своего дизайна и того факта, что она содержит всю информацию в памяти. Redis включает функции брокера сообщений и базы данных, но широко распознается как система кэширования.
Повышение производительности кэша
Кэши можно использовать для повышения производительности многих систем, требующих времени для создания ответов пользователям. Рассмотрим, например, веб-сайт электронной коммерции, построенный из микрослужб. Когда пользователь хочет узнать, какие элементы находятся в корзине покупок, система может:
- Получите запрос в микрослужбе веб-приложения.
- Вызовите микрослужбу проверки подлинности, чтобы проверить удостоверение пользователей, если они вошли в систему.
- Вызовите микрослужбу корзины покупок, чтобы узнать, какие элементы и какие количества находятся в корзине.
- Вызовите микрослужбу каталога продуктов, чтобы получить полные сведения о каждом продукте.
- Вызовите микросервис изображений, чтобы получить блобы изображений для каждого продукта.
- Вызывайте микросервис для проверки уровней запасов.
- Вызовите микрослужбу доставки, чтобы вычислить затраты на доставку для расположения и предпочтений пользователя.
Точные шаги могут отличаться в зависимости от ваших функциональных возможностей проектирования и бизнеса, но вы можете увидеть, что процесс может быть сложным и включает множество отдельных микрослужб и служб резервного копирования. Хотя каждая микрослужба должна быть настроена и ресурсоемка для эффективной работы, создание ответа неизбежно потребляет некоторое время.
Теперь представьте, что пользователь обновляет страницу. Вместо восстановления всего HTML-ответа с нуля, если страница или части его хранились в кэше, его можно вернуть пользователю гораздо быстрее, чем исходный запрос. Этот быстрый ответ помогает сделать веб-приложение более адаптивным и приветственным для пользователей.
Соображения по поводу кэша
При использовании кэширования ключевое решение по проектированию заключается в том, как долго кэшировать определенный фрагмент содержимого. Например, если вы закэшировали страницу с заполненной корзиной на час, в течение которого, скорее всего, будут размещаться другие заказы, то закэшированная страница иногда будет сообщать об устаревших остатках товаров, и пользователям, возможно, придется ждать дольше, чем ожидалось, для доставки. Если вы кэшируете страницу на одну минуту, вы можете быть более уверены в том, что уровни запасов будут точными, но можете увидеть мало или вообще никакого улучшения в производительности. Поэтому при выборе времени кэширования сведений следует учитывать:
- Как часто изменяется информация? Например, уровни акций могут меняться несколько раз в час, но новые продукты могут отображаться только в каталоге каждые несколько месяцев.
- Насколько важно, чтобы пользователи видели информацию о дате up-to? Например, уровни запасов могут быть основными, но вы можете считать новые отзывы о продуктах менее важными с точки зрения срочности.
- Как часто вы, вероятно, будете получать запросы на получение информации? Кэширование популярных сведений приводит к повышению производительности, так как система может обслуживать ее из кэша несколько раз.
Использование Redis в проектах .NET Aspire
Redis — это популярный выбор для кэширования в облачном приложении. .NET Aspire предоставляет три компонента, которые можно использовать для взаимодействия со службой Redis:
- компонент .NET Aspire StackExchange Redis: используйте этот компонент для взаимодействия непосредственно с сервером Redis. Например, его можно использовать для сохранения и извлечения значений в базе данных Redis или подписки на сообщения, отправленные в канал. Так как этот компонент не ориентирован на кэширование, мы не рассмотрим его дальше в этом модуле.
- компонент кэширования выходных данных .NET Aspire StackExchange Redis: используйте этот компонент для кэширования полных http-ответов.
- Компонент распределенного кэширования .NET Aspire StackExchange Redis: Используйте этот компонент кэширования для хранения и извлечения данных из распределенного кэша. Распределенное кэширование описывает архитектуру, в которой несколько микрослужб или других клиентских служб совместно используют один кэш.
Подробнее
- Обзор кэширования в ASP.NET Core
- Руководство по . Реализация кэширования с помощью компонентов .NET Aspire
- Основы использования StackExchange.Redis