Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Включает: интеграция хостинга — и —
Client Интеграция
Узнайте, как использовать интеграцию кэширования выходных данных .NET AspireRedis. Интеграция клиента Aspire.StackExchange.Redis.OutputCaching
используется для регистрации поставщика кэширования ASP.NET Core выходных данных, поддерживаемого сервером Redis с образом docker.io/library/redis
контейнера.
Узнайте, как использовать интеграцию кэширования выходных данных .NET AspireRedis. Интеграция клиента
Узнайте, как использовать интеграцию кэширования выходных данных .NET AspireRedis. Интеграция Aspire.StackExchange.Redis.OutputCaching
клиента используется для регистрации ASP.NET Core поставщика кэширования выходных данных, поддерживаемого сервером Valkey с docker.io/valkey/valkey
образом контейнера.
Интеграция хостинга
Интеграция Redis моделирует ресурс Redis, используя тип RedisResource. Чтобы получить доступ к этому типу и API для выражения их в качестве ресурсов в проекте узла приложения, добавьте 📦Aspire.Хостинг.Redis пакет NuGet.
dotnet add package Aspire.Hosting.Redis
Дополнительные сведения см. в разделе dotnet add package или Управление зависимостями пакетов в .NET приложениях.
Добавить ресурс Redis
В проекте хоста приложения, вызовите AddRedis на экземпляре builder
, чтобы добавить ресурс Redis.
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache");
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Когда .NET.NET Aspire добавляет контейнерный образ в узел приложения, как показано в предыдущем примере с образом docker.io/Redis/Redis
, он создает новый экземпляр Redis на локальном компьютере. Ссылка на ресурс Redis (переменная cache
) добавляется в ExampleProject
.
Метод WithReference настраивает подключение в ExampleProject
с именем "cache"
. Дополнительные сведения см. в разделе "Жизненный цикл ресурсов контейнера".
Совет
Если вы хотите подключиться к существующему экземпляру Redis, вызовите AddConnectionString вместо этого. Дополнительные сведения см. в статье "Справочник по существующим ресурсам".
Добавление ресурса Redis с помощью Redis Insights
Чтобы добавить Redis Результаты анализа к ресурсу Redis, вызовите метод WithRedisInsight
.
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache")
.WithRedisInsight();
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Redis Insights — это бесплатный интерфейс с графическим пользовательским интерфейсом для анализа данных Redis на всех операционных системах и развертываниях Redis с помощью помощника на базе искусственного интеллекта Redis Copilot.
.NET
.NET Aspire добавляет еще один образ контейнера docker.io/redis/redisinsight
к хосту приложения, который запускает командирское приложение.
Заметка
Чтобы настроить порт узла для цепочки RedisInsightResource
, выполните вызов к API WithHostPort
и укажите нужный номер порта.
Добавить ресурс Redis с помощью Redis Commander
Чтобы добавить Redis Commander в Redis ресурс, вызовите метод:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache")
.WithRedisCommander();
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Redis Commander — это веб-приложение Node.js, используемое для просмотра, редактирования и управления базой данных Redis.
.NET
.NET Aspire добавляет еще один образ контейнера docker.io/rediscommander/redis-commander
к хосту приложения, который запускает командирское приложение.
Совет
Чтобы настроить порт узла для цепочки RedisCommanderResource, выполните вызов к API WithHostPort и укажите нужный номер порта.
Добавьте ресурс Redis с объемом данных
Чтобы добавить том данных в ресурс Redis, вызовите метод WithDataVolume в ресурсе Redis:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache")
.WithDataVolume(isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Объём данных используется для сохранения Redis данных вне жизненного цикла контейнера. Объем данных монтируется по пути /data
в контейнере Redis, и если параметр name
не указан, имя генерируется случайным образом. Дополнительные сведения о томах данных и о том, почему они предпочтительнее привязок монтирования, см. Docker документацию: Тома.
Добавление ресурса Redis с подключением привязки данных
Чтобы добавить крепление привязки данных к ресурсу Redis, вызовите метод WithDataBindMount.
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache")
.WithDataBindMount(
source: @"C:\Redis\Data",
isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Важный
Привязки данных имеют ограниченные функциональные возможности по сравнению с томами , которые обеспечивают более высокую производительность, переносимость и безопасность, что делает их более подходящими для производственных сред. Однако привязываемые подключения позволяют напрямую получать доступ и изменять файлы в хост-системе, что идеально подходит для разработки и тестирования, где требуются изменения в режиме реального времени.
Монтирование привязки данных зависит от файловой системы хост-компьютера для обеспечения сохранности данных Redis при перезапусках контейнера. Монтирование привязки данных осуществляется по пути C:\Redis\Data
на Windows (или /Redis/Data
на Unix) на хост-компьютере в контейнере Redis. Для получения дополнительной информации о монтировании данных с привязкой см. документацию: Монтирование с привязкой.
Добавление ресурса Redis с сохраняемостью
Чтобы добавить сохраняемость к ресурсу Redis, вызовите метод WithPersistence с подключением тома данных или привязки данных:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache")
.WithDataVolume()
.WithPersistence(
interval: TimeSpan.FromMinutes(5),
keysChangedThreshold: 100);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Приведенный выше код добавляет долговременное сохранение данных ресурсу Redis путем создания моментальных снимков данных Redis с заданной периодичностью и при достижении определенного порога.
interval
— это время между экспортами моментальных снимков, keysChangedThreshold
— количество операций изменения ключей, необходимых для запуска моментального снимка. Для получения дополнительной информации о устойчивости см. документацию: УстойчивостьRedis.
Интеграция с Гарнетом моделирует ресурс Garnet в качестве типа GarnetResource. Чтобы получить доступ к этому типу и API, которые позволяют добавить его в ваш пакет 📦Aspire.Hosting.Garnet NuGet в проекте хоста приложения.
dotnet add package Aspire.Hosting.Garnet
Дополнительные сведения см. в разделе dotnet add package или Управление зависимостями пакетов в .NET приложениях.
Добавление ресурса Garnet
В проекте хоста приложения вызовите AddGarnet на экземпляре builder
, чтобы добавить ресурс Garnet.
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddGarnet("cache");
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Когда .NET.NET Aspire добавляет образ контейнера в хост приложения, как показано в предыдущем примере с изображением ghcr.io/microsoft/garnet
, он создает новый экземпляр Garnet на локальном компьютере. Ссылка на ресурс Garnet (переменная cache
) добавляется в ExampleProject
.
Метод WithReference настраивает подключение в ExampleProject
с именем "cache"
. Дополнительные сведения см. в разделе "Жизненный цикл ресурсов контейнера".
Совет
Если вы хотите подключиться к существующему экземпляру Garnet, вызовите AddConnectionString вместо этого. Дополнительные сведения см. в статье "Справочник по существующим ресурсам".
Добавить ресурс Garnet с объемом данных
Чтобы добавить том данных в ресурс Garnet, вызовите метод AddGarnet в ресурсе Garnet:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddGarnet("cache")
.WithDataVolume(isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Том данных используется для сохранения данных Garnet вне жизненного цикла контейнера. Том данных монтируется в контейнер Garnet по пути /data
, и если параметр name
не указан, имя генерируется случайным образом. Дополнительные сведения о томах данных и о том, почему они предпочтительнее привязок монтирования, см. Docker документацию: Тома.
Добавление ресурса Garnet с подключением привязки данных
Чтобы добавить точку привязки данных к ресурсу Garnet, вызовите метод WithDataBindMount:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddGarnet("cache")
.WithDataBindMount(
source: @"C:\Garnet\Data",
isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Важный
Привязки данных имеют ограниченные функциональные возможности по сравнению с томами , которые обеспечивают более высокую производительность, переносимость и безопасность, что делает их более подходящими для производственных сред. Однако привязываемые подключения позволяют напрямую получать доступ и изменять файлы в хост-системе, что идеально подходит для разработки и тестирования, где требуются изменения в режиме реального времени.
Привязки данных (data bind mounts) опираются на файловую систему хост-компьютера для сохранения данных Garnet при перезапусках контейнера. Точка монтирования привязки данных находится по пути C:\Garnet\Data
на Windows (или /Garnet/Data
на Unix) на хост-компьютере в контейнере Garnet. Для получения дополнительной информации о монтировании данных с привязкой см. документацию: Монтирование с привязкой.
Добавить ресурс Garnet с сохранением данных
Чтобы добавить устойчивость данных к ресурсу Garnet, вызовите метод WithPersistence при помощи тома данных или привязки данных.
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddGarnet("cache")
.WithDataVolume()
.WithPersistence(
interval: TimeSpan.FromMinutes(5),
keysChangedThreshold: 100);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Код, представленный выше, добавляет персистентность ресурсу Redis путем создания моментальных снимков данных Garnet с заданным интервалом и пороговым значением.
interval
— это время между экспортами моментальных снимков, keysChangedThreshold
— количество операций изменения ключей, необходимых для запуска моментального снимка. Для получения дополнительной информации о устойчивости см. документацию: УстойчивостьRedis.
Интеграция хостинга Valkey представляет ресурс Valkey в виде типа ValkeyResource. Чтобы получить доступ к этому типу и API, которые позволяют добавить его в ваш пакет NuGet 📦Aspire.Hosting.Valkey в проекте хоста приложения.
dotnet add package Aspire.Hosting.Valkey
Дополнительные сведения см. в разделе dotnet add package или Управление зависимостями пакетов в .NET приложениях.
Добавление ресурса Valkey
В проекте размещения приложения вызовите AddValkey на экземпляре builder
, чтобы добавить ресурс Valkey.
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddValkey("cache");
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Когда .NET.NET Aspire добавляет образ контейнера в хост приложения, как показано в предыдущем примере с образом docker.io/valkey/valkey
, он создает новый экземпляр Valkey на локальном компьютере. Ссылка на ресурс Valkey (переменная cache
) добавляется в ExampleProject
.
Метод WithReference настраивает подключение в ExampleProject
с именем "cache"
. Дополнительные сведения см. в разделе "Жизненный цикл ресурсов контейнера".
Совет
Если вы хотите подключиться к существующему экземпляру Valkey, вызовите AddConnectionString вместо этого. Дополнительные сведения см. в статье "Справочник по существующим ресурсам".
Добавьте ресурс Valkey с объемом данных
Чтобы добавить том данных в ресурс Valkey, вызовите метод AddValkey в ресурсе Valkey:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddValkey("cache")
.WithDataVolume(isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Том данных используется для сохранения данных Valkey за пределами жизненного цикла контейнера. Объем данных монтируется по пути /data
в контейнере Valkey, а если параметр name
отсутствует, имя создается случайным образом. Дополнительные сведения о томах данных и о том, почему они предпочтительнее привязок монтирования, см. Docker документацию: Тома.
Добавление ресурса Valkey с подключением привязки данных
Чтобы добавить подключение привязки данных к ресурсу Valkey, вызовите метод WithDataBindMount:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddValkey("cache")
.WithDataBindMount(
source: @"C:\Valkey\Data",
isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Важный
Привязки данных имеют ограниченные функциональные возможности по сравнению с томами , которые обеспечивают более высокую производительность, переносимость и безопасность, что делает их более подходящими для производственных сред. Однако привязываемые подключения позволяют напрямую получать доступ и изменять файлы в хост-системе, что идеально подходит для разработки и тестирования, где требуются изменения в режиме реального времени.
Монтажи для привязки данных зависят от файловой системы хост-компьютера, чтобы сохранить данные Valkey между перезапусками контейнера. Точка привязки данных монтируется на C:\Valkey\Data
в Windows (или на /Valkey/Data
в Unix) по пути на компьютере-хосте в контейнере Valkey. Для получения дополнительной информации о монтировании данных с привязкой см. документацию: Монтирование с привязкой.
Добавьте ресурс Valkey с сохранением данных
Чтобы добавить устойчивость ресурсу Valkey, вызовите метод WithPersistence, указав либо том данных, либо привязку данных.
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddValkey("cache")
.WithDataVolume()
.WithPersistence(
interval: TimeSpan.FromMinutes(5),
keysChangedThreshold: 100);
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Приведенный выше код добавляет постоянство к ресурсу Redis посредством создания снимков данных Valkey с определённым интервалом и порогом.
interval
— это время между экспортами моментальных снимков, keysChangedThreshold
— количество операций изменения ключей, необходимых для запуска моментального снимка. Для получения дополнительной информации о устойчивости см. документацию: УстойчивостьRedis.
Проверка работоспособности интеграции в рамках хостинга
Интеграция хостинга Redis автоматически добавляет проверку состояния для соответствующего типа ресурса. Проверка работоспособности проверяет, запущен ли сервер и что подключение можно установить к нему.
Интеграция размещения зависит от пакета NuGet AspNetCore.HealthChecks.
интеграция Client
Чтобы приступить к работе с .NET Aspire интеграцией клиента кэширования выходных данных Stack ExchangeRedis, установите файл📦Aspire . StackExchange.Redis. Выходной пакет NuGet в проекте, использующего клиент, то есть проект для приложения, использующего выходной клиент кэширования. Интеграция клиента кэширования вывода Redis регистрирует службы, необходимые для включения вызовов методов CacheOutput и использования атрибута [OutputCache], чтобы полагаться на Redis как на механизм кэширования.
dotnet add package Aspire.StackExchange.Redis.OutputCaching
Добавление кэширования выходных данных
В файле Program.cs вашего проекта клиента-потребителя вызовите метод расширения AddRedisOutputCache на любом IHostApplicationBuilder, чтобы зарегистрировать необходимые службы для кэширования выходных данных.
builder.AddRedisOutputCache(connectionName: "cache");
Совет
Параметр connectionName
должен соответствовать имени, используемому при добавлении ресурса Redis в проект узла приложения. Дополнительные сведения см. в разделе "Добавление Redis ресурса".
Совет
Параметр connectionName
должен соответствовать имени, используемому при добавлении ресурса Garnet в проект узла приложения. Дополнительные сведения см. в разделе "Добавление ресурса Garnet".
Совет
Параметр connectionName
должен соответствовать имени, используемому при добавлении ресурса Valkey в проект узла приложения. Дополнительные сведения см. в разделе "Добавление ресурса Valkey".
Добавьте ПО промежуточного слоя в конвейер обработки запросов, вызвав UseOutputCache(IApplicationBuilder):
var app = builder.Build();
app.UseOutputCache();
Для минимальных приложений API настройте конечную точку для кэширования, вызвав CacheOutput или применив OutputCacheAttribute, как показано в следующих примерах:
app.MapGet("/cached", () => "Hello world!")
.CacheOutput();
app.MapGet(
"/attribute",
[OutputCache] () => "Hello world!");
Для приложений с контроллерами примените атрибут [OutputCache]
к методу действия. Для приложений Razor Pages примените атрибут к классу страницы Razor.
Конфигурация
Интеграция кэширования выходных данных .NET Aspire Stack Exchange Redis предоставляет несколько вариантов настройки подключения Redis на основе требований и соглашений проекта.
Используйте строку подключения
При использовании строки подключения из раздела конфигурации ConnectionStrings
можно указать имя строки подключения при вызове AddRedisOutputCache:
builder.AddRedisOutputCache(connectionName: "cache");
Затем строка подключения будет получена из раздела конфигурации ConnectionStrings
:
{
"ConnectionStrings": {
"cache": "localhost:6379"
}
}
Дополнительные сведения о форматировании этой строки подключения см. в документации по конфигурации Stack ExchangeRedis.
Использование поставщиков конфигураций
Интеграция .NET Aspire Stack Exchange Redis для кэширования вывода поддерживает Microsoft.Extensions.Configuration. Он загружает StackExchangeRedisSettings из конфигурации с помощью ключа Aspire:StackExchange:Redis
. Пример appsettings.json, который настраивает некоторые параметры:
{
"Aspire": {
"StackExchange": {
"Redis": {
"ConfigurationOptions": {
"ConnectTimeout": 3000,
"ConnectRetry": 2
},
"DisableHealthChecks": true,
"DisableTracing": false
}
}
}
}
Полную схему интеграции клиентского кэширования см. в Redis.
Использование встроенных делегатов
Можно также передать делегат Action<StackExchangeRedisSettings> configurationSettings
для настройки некоторых или всех параметров непосредственно в коде, например, чтобы отключить проверки состояния из кода.
builder.AddRedisOutputCache(
"cache",
static settings => settings.DisableHealthChecks = true);
Вы также можете настроить ConfigurationOptions с помощью Action<ConfigurationOptions> configureOptions
параметра делегата AddRedisOutputCache метода. Например, чтобы задать время ожидания подключения:
builder.AddRedisOutputCache(
"cache",
static settings => settings.ConnectTimeout = 3_000);
Client проверка состояния интеграции
По умолчанию .NET.NET Aspireинтеграция клиентов включает проверки работоспособности для всех служб. Аналогичным образом, многие интеграции в области хостинга также позволяют проверять состояние конечных точек. Дополнительные сведения см. в следующем разделе:
Интеграция .NET Aspire Stack Exchange Redis с кэшированием выходных данных обрабатывает следующее:
- Добавляет проверку работоспособности, когда StackExchangeRedisSettings.DisableHealthChecks является
false
, которая пытается подключиться к экземпляру контейнера. - Интегрируется с конечной точкой HTTP
/health
, которая указывает, что все зарегистрированные проверки работоспособности должны быть успешными, чтобы приложение считалось готовым принять трафик.
Наблюдаемость и телеметрия
.NET
.NET Aspire интеграции автоматически настраивают конфигурации журналов, трассировки и метрик, которые иногда называются основными компонентами наблюдаемости. Для получения дополнительной информации об наблюдаемости интеграции и телеметрии см. .NET.NET Aspireобзор интеграции. В зависимости от резервной службы некоторые интеграции могут поддерживать только некоторые из этих функций. Например, некоторые интеграции поддерживают ведение журнала и трассировку, но не метрики. Функции телеметрии также можно отключить с помощью методов, представленных в разделе конфигурации
Лесозаготовка
Интеграция кэширования выходных данных .NET Aspire Stack Exchange Redis использует следующие категории журналов:
Aspire.StackExchange.Redis
Microsoft.AspNetCore.OutputCaching.StackExchangeRedis
Отслеживание
.NET Aspire Интеграция кэширования выводных данных Stack Exchange Redis будет выдавать следующие действия трассировки с помощью OpenTelemetry:
OpenTelemetry.Instrumentation.StackExchangeRedis
Метрика
Интеграция кэширования выходных данных .NET Aspire Stack Exchange Redis в настоящее время не поддерживает метрики по умолчанию из-за ограничений библиотеки StackExchange.Redis
.
См. также
*: Redis является зарегистрированным товарным знаком Redis Ltd. Любые права на него принадлежат Redis Ltd. Любое использование корпорацией Microsoft осуществляется исключительно в справочных целях и не указывает на спонсорство, поддержку или аффилированность между Redis и корпорацией Microsoft. Вернуться в начало?
.NET Aspire