Интеграция кэширования выходных данных .NET AspireRedis* ®
Включает:интеграция размещения и Client интеграция
Узнайте, как использовать интеграцию кэширования выходных данных .NET AspireRedis. Интеграция
Узнайте, как использовать интеграцию кэширования выходных данных .NET AspireRedis. Интеграция
Узнайте, как использовать интеграцию кэширования выходных данных .NET AspireRedis. Интеграция
Интеграция хостинга
Redis интеграция моделирует ресурс Redis как тип RedisResource. Чтобы получить доступ к этому типу и API, которые позволяют добавить его в 📦Aspire, используйте пакет NuGetRedis в проекте хоста приложения.
dotnet add package Aspire.Hosting.Redis
Дополнительные сведения см. в статье dotnet add package or Manage package dependencies in .NET applications.
Добавление ресурса 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 Insights в ресурс 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
Чтобы добавить Redis Commander в ресурс Redis, вызовите метод WithRedisCommander:
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. Дополнительные сведения о подключении привязок данных см. в документации по Docker: подключение привязок.
Добавление ресурса 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, которые позволяют добавить его в пакет NuGet Hosting.Garnet 📦Aspire в проекте хоста приложения .
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 вне жизненного цикла контейнера. Том данных подключается по пути /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...
Важный
Подключения привязки данных имеют ограниченные функциональные возможности по сравнению с томами, которые обеспечивают более высокую производительность, переносимость и безопасность, что делает их более подходящими для рабочих сред. Однако привязываемые подключения позволяют напрямую получать доступ и изменять файлы в хост-системе, идеально подходит для разработки и тестирования, в которых требуются изменения в режиме реального времени.
Привязка данных опирается на файловую систему хост-компьютера для сохранения данных Garnet при перезапусках контейнера. Монтирование привязки данных находится в пути C:\Garnet\Data
на Windows (или /Garnet/Data
на Unix) на хост-компьютере в контейнере Garnet. Дополнительные сведения о маунтах привязки данных см. в документации по Docker: маунты привязки.
Добавить ресурс 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.Host.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. Дополнительные сведения о монтировании привязки данных см. в документации по Docker: монтирование привязки данных.
Добавьте ресурс 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 автоматически добавляет проверку состояния для соответствующего типа ресурса. Проверка работоспособности проверяет, работает ли server и можно ли установить с ним соединение.
Интеграция размещения зависит от 📦 AspNetCore.HealthChecks.Redis пакет NuGet.
интеграция Client
Чтобы приступить к работе с интеграцией кэширования client с .NET Aspire Stack Exchange Redis, установите пакет NuGet 📦Aspire.StackExchange.Redis.OutputCaching в проект, использующий client, то есть проект для приложения, использующего выходное кэширование client.
dotnet add package Aspire.StackExchange.Redis.OutputCaching
Добавление кэширования выходных данных
В файле Program.cs вашего проекта client-потребляющего вызовите метод расширения 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"
}
}
Дополнительные сведения о том, как отформатировать эту строку подключения, см. в документации по конфигурации RedisStack Exchange.
Использование поставщиков конфигураций
Интеграция .NET Aspire Stack Exchange Redis поддерживает Microsoft.Extensions.Configuration. Он загружает StackExchangeRedisSettings из конфигурации с помощью ключа Aspire:StackExchange:Redis
. Пример appsettings.json, который настраивает некоторые параметры:
{
"Aspire": {
"StackExchange": {
"Redis": {
"ConnectionString": "localhost:6379",
"DisableHealthChecks": true,
"DisableTracing": false
}
}
}
}
Для полной схемы интеграции RedisclientJSON см. Aspire. StackExchange.Redis/ConfigurationSchema.json.
Использование встроенных делегатов
Можно также передать делегат 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);
Проверки состояния здоровья
По умолчанию интеграции .NET.NET Aspire включают проверки работоспособности для всех служб . Дополнительные сведения см. в обзоре интеграции .NET.NET Aspire.
Интеграция с кэшированием выходных данных Redis Stack Exchange .NET AspireRedis обрабатывает следующее:
- Добавляет проверку работоспособности
StackExchange.Redis
, пытается открыть подключение и выбрасывает исключение при сбое. - Интегрируется с конечной точкой 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
.
интеграция хостинга AzureRedis
Чтобы развернуть ресурсы Redis в Azure, установите 📦Aspire. Хостинг.Azure. пакет NuGetRedis:
dotnet add package Aspire.Hosting.Azure.Redis
Добавьте ресурс Azure Cache for Redisserver
После того как вы установите пакет размещения .NET AspireAzureRedis, вызовите метод расширения AddAzureRedis
в вашем проекте узла приложения.
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddAzureRedis("azcache")
var exampleProject = builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
Предыдущий вызов AddAzureRedis
настраивает ресурс Redisserver для развертывания в качестве Azure Cache for Redis.
Важный
По умолчанию AddAzureRedis
настраивает аутентификацию Microsoft Entra ID. Для этого необходимо изменить приложения, которые должны подключаться к этим ресурсам, например, интеграции client.
Добавьте выход Azure Cache for Redisclient
По умолчанию при вызове AddAzureRedis
в интеграции размещения Redis она настраивает 📦 Майкрософт.Azure. StackExchangeRedis пакет NuGet для включения проверки подлинности:
dotnet add package Microsoft.Azure.StackExchangeRedis
Подключение Redis можно использовать с помощью интеграции client и Microsoft.Azure.StackExchangeRedis
. Рассмотрим следующий код конфигурации:
var azureOptionsProvider = new AzureOptionsProvider();
var configurationOptions = ConfigurationOptions.Parse(
builder.Configuration.GetConnectionString("cache") ??
throw new InvalidOperationException("Could not find a 'cache' connection string."));
if (configurationOptions.EndPoints.Any(azureOptionsProvider.IsMatch))
{
await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(
new DefaultAzureCredential());
}
builder.AddRedisOutputCache("cache", configureOptions: options =>
{
options.Defaults = configurationOptions.Defaults;
});
Дополнительные сведения см. в Майкрософт.Azure. Репозиторий StackExchangeRedis.
См. также
*: Redis является зарегистрированным товарным знаком Redis Ltd. Любые права, указанные в них, зарезервированы для Redis Ltd. Любое использование корпорации Майкрософт предназначено только для ссылок и не указывает на спонсорство, подтверждение или принадлежность между Redis и Корпорацией Майкрософт. Вернуться к верхней?
.NET Aspire