® .NET AspireRedisintegração de cache de saída*
Inclui:integração de hospedagem e integração Client
Saiba como usar a integração de cache de saída .NET AspireRedis. A integração Aspire.StackExchange.Redis.OutputCaching
client é usada para registrar um provedor de cache de saída ASP.NET Core, apoiado por um Redisserver com a imagem de contêiner docker.io/library/redis
.
Saiba como usar a integração de cache de saída .NET AspireRedis. A integração
Saiba como usar a integração de cache de saída .NET AspireRedis. A integração de Aspire.StackExchange.Redis.OutputCaching
client é usada para registrar um provedor de ASP.NET Core de cache de saída suportado por um Valkeyserver com a imagem de contêiner docker.io/valkey/valkey
.
Integração de hospedagem
A integração de hospedagem de Redis modela o recurso Redis como tipo RedisResource. Para acessar esse tipo e as APIs que permitem adicioná-lo ao seu 📦AspireHospedagemRedis pacote NuGet no projeto de host de aplicativo .
- .NET CLI
-
PackageReference
dotnet add package Aspire.Hosting.Redis
Para obter mais informações, consulte dotnet add package ou Gerenciar dependências de pacotes em .NET aplicações.
Adicionar Redis recurso
No projeto de host do aplicativo, chame AddRedis na instância builder
para adicionar um recurso de Redis:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache");
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Quando .NET.NET Aspire adiciona uma imagem de contêiner ao host do aplicativo, conforme mostrado no exemplo anterior com a imagem docker.io/Redis/Redis
, ele cria uma nova instância de Redis em seu computador local. Uma referência ao recurso Redis (a variável cache
) é adicionada ao ExampleProject
.
O método WithReference configura uma conexão no ExampleProject
denominado "cache"
. Para obter mais informações, consulte ciclo de vida do recurso do contêiner.
Dica
Se você preferir se conectar a uma instância de Redis existente, chame AddConnectionString em vez disso. Para obter mais informações, consulte Referenciar recursos existentes.
Adicionar Redis recurso com o Redis Insights
Para adicionar os Redis Insights ao recurso Redis, chame o método 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 é uma interface gráfica gratuita para analisar dados Redis em todos os sistemas operacionais e implantações de Redis com a ajuda do nosso assistente de IA, Redis Copilot.
.NET
.NET Aspire adiciona outra imagem de contêiner docker.io/redis/redisinsight
ao host do aplicativo que executa o aplicativo comandante.
Nota
Para configurar a porta do host para RedisInsightResource
, faça uma chamada à API de WithHostPort
e forneça o número de porta desejado.
Adicionar recurso Redis com o comandante Redis
Para adicionar o Redis Commander ao recurso Redis, chame o método 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 é um aplicativo Web Node.js usado para exibir, editar e gerenciar um banco de dados Redis.
.NET
.NET Aspire adiciona outra imagem de contêiner docker.io/rediscommander/redis-commander
ao host do aplicativo que executa o aplicativo comandante.
Dica
Para configurar a porta do host para a cadeia RedisCommanderResource, faça uma chamada à API WithHostPort e forneça o número da porta desejado.
Adicionar o recurso Redis com volume de dados
Para adicionar um volume de dados ao recurso Redis, chame o método WithDataVolume no recurso 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...
O volume de dados é usado para persistir os dados de Redis fora do ciclo de vida de seu contêiner. O volume de dados é montado no caminho /data
no contêiner Redis e, quando um parâmetro name
não é fornecido, o nome é gerado aleatoriamente. Para obter mais informações sobre volumes de dados e detalhes sobre por que eles são preferenciais em vez de associar montagens, consulte Docker documentos: Volumes.
Adicionar recurso Redis com vinculação de dados
Para adicionar uma montagem de associação de dados ao recurso Redis, chame o método 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...
Importante
Montagens de ligação de dados têm funcionalidade limitada em comparação com volumes , os quais oferecem melhor desempenho, portabilidade e segurança, o que os torna mais adequados para ambientes de produção. No entanto, as bind mounts permitem acesso direto e modificação de arquivos no sistema host, ideal para desenvolvimento e testes em que são necessárias alterações em tempo real.
As montagens de vínculo de dados dependem do sistema de arquivos da máquina host para preservar os dados Redis entre reinicializações de contêiner. A vinculação de dados é montada no caminho C:\Redis\Data
no Windows (ou /Redis/Data
no Unix) no computador host dentro do contêiner Redis. Para obter mais informações sobre montagens de bind de dados, consulte Docker na documentação: montagens de bind.
Adicionar o recurso Redis com persistência
Para adicionar persistência ao recurso Redis, chame o método WithPersistence com o volume de dados ou a montagem da associação de dados:
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...
O código anterior adiciona persistência ao recurso Redis tirando instantâneos dos dados Redis em um intervalo e limite especificados. O interval
é o tempo entre as exportações de instantâneos e o keysChangedThreshold
é o número de operações de alteração de chave necessárias para acionar um instantâneo. Para obter mais informações sobre persistência, consulte Redis documentos: Persistência.
A integração de hospedagem da Garnet modela um recurso Garnet como o tipo GarnetResource. Para acessar este tipo e as APIs que permitem adicioná-lo ao pacote NuGet 📦Aspire.Hosting.Garnet no projeto host do aplicativo .
dotnet add package Aspire.Hosting.Garnet
Para obter mais informações, consulte dotnet add package ou Gerencie as dependências de pacotes em aplicativos .NET.
Adicionar recurso garnet
No projeto de host do aplicativo, chame AddGarnet na instância builder
para adicionar um recurso garnet:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddGarnet("cache");
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Quando .NET.NET Aspire adiciona uma imagem de contêiner ao host do aplicativo, conforme mostrado no exemplo anterior com a imagem ghcr.io/microsoft/garnet
, ele cria uma nova instância garnet em seu computador local. Uma referência ao recurso garnet (a variável cache
) é adicionada ao ExampleProject
.
O método WithReference configura uma conexão no ExampleProject
denominado "cache"
. Para obter mais informações, consulte ciclo de vida do recurso de contêiner.
Dica
Se você preferir se conectar a uma instância da Garnet existente, chame AddConnectionString em vez disso. Para obter mais informações, consulte Consultar recursos existentes.
Adicionar recurso Garnet com volume de dados
Para adicionar um volume de dados ao recurso garnet, chame o método AddGarnet no recurso 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...
O volume de dados é usado para persistir os dados da Garnet fora do ciclo de vida de seu contêiner. O volume de dados é montado no caminho /data
no contêiner Garnet e, quando um parâmetro name
não é fornecido, o nome é gerado de forma aleatória. Para obter mais informações sobre volumes de dados e detalhes sobre por que eles são preferenciais em vez de associar montagens, consulte Docker documentos: Volumes.
Adicionar recurso garnet com a montagem de associação de dados
Para adicionar um data bind mount ao recurso Garnet, chame o método 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...
Importante
Os de dados associam montagens têm funcionalidade limitada em comparação com volumes, que oferecem melhor desempenho, portabilidade e segurança, tornando-os mais adequados para ambientes de produção. No entanto, os bind mounts permitem acesso direto e modificação de arquivos no sistema host, sendo ideais para desenvolvimento e teste, onde alterações em tempo real são necessárias.
As montagens de associação de dados dependem do sistema de arquivos do computador host para persistir os dados do Garnet durante as reinicializações de contêiner. A montagem de dados é feita no caminho C:\Garnet\Data
no Windows (ou /Garnet/Data
no Unix) no computador host, dentro do contêiner Garnet. Para obter mais informações sobre montagens de bind de dados, consulte Docker documentação: Montagens de bind.
Adicionar recurso Garnet com persistência
Para adicionar persistência ao recurso garnet, chame o método WithPersistence com o volume de dados ou a montagem da associação de dados:
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...
O código anterior adiciona persistência ao recurso Redis tirando instantâneos dos dados da Garnet em um intervalo e limite especificados. O interval
é o tempo entre as exportações de instantâneos e o keysChangedThreshold
é o número de operações de alteração de chave necessárias para acionar um instantâneo. Para obter mais informações sobre persistência, consulte Redis documentos: Persistência.
A integração de hospedagem Valkey modela um recurso Valkey como o tipo ValkeyResource. Para acessar esse tipo e as APIs que permitem adicioná-lo ao seu pacote NuGet 📦Aspire.Hosting.Valkey no projeto do host do aplicativo .
- .NET CLI
-
PackageReference
dotnet add package Aspire.Hosting.Valkey
Para obter mais informações, consulte dotnet add package ou Gerenciar dependências de pacotes em aplicações .NET.
Adicionar recurso do Valkey
No projeto de host do aplicativo, chame AddValkey na instância builder
para adicionar um recurso valkey:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddValkey("cache");
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Quando .NET.NET Aspire adiciona uma imagem de contêiner ao host do aplicativo, conforme mostrado no exemplo anterior com a imagem docker.io/valkey/valkey
, ele cria uma nova instância do Valkey em seu computador local. Uma referência ao recurso Valkey (a variável cache
) é adicionada ao ExampleProject
.
O método WithReference configura uma conexão no ExampleProject
denominado "cache"
. Para obter mais informações, consulte ciclo de vida do recurso contêiner.
Dica
Se você preferir se conectar a uma instância do Valkey existente, chame AddConnectionString em vez disso. Para obter mais informações, consulte Consulte recursos existentes.
Adicionar recurso Valkey com volume de dados
Para adicionar um volume de dados ao recurso Valkey, chame o método AddValkey no recurso 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...
O volume de dados é usado para persistir os dados "Valkey" fora do ciclo de vida de seu contêiner. O volume de dados é montado no caminho /data
no contêiner Valkey e, quando um parâmetro name
não é fornecido, o nome é gerado aleatoriamente. Para obter mais informações sobre volumes de dados e detalhes sobre por que eles são preferidos em vez de mounts de ligação, consulte Docker documentos: Volumes.
Adicionar o recurso Valkey com montagem de vinculação de dados
Para adicionar uma montagem de associação de dados ao recurso Valkey, chame o método 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...
Importante
Os de dados associam montagens têm funcionalidade limitada em comparação com volumes, que oferecem melhor desempenho, portabilidade e segurança, tornando-os mais adequados para ambientes de produção. No entanto, os 'bind mounts' permitem acesso direto e modificação de arquivos no sistema host, sendo ideal para desenvolvimento e teste em que são necessárias alterações em tempo real.
As montagens de associação de dados dependem do sistema de arquivos do computador host para persistir os dados do Valkey nas reinicializações de contêiner. A montagem de ligação de dados é feita no caminho do Windows em C:\Valkey\Data
(ou /Valkey/Data
em Unix) na máquina host no contêiner Valkey. Para obter mais informações sobre montagens de ligação de dados, consulte a documentação Docker: Montagens de ligação.
Adicionar recurso Valkey com persistência
Para adicionar persistência ao recurso Valkey, chame o método WithPersistence com o volume de dados ou a montagem da associação de dados:
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...
O código anterior adiciona persistência ao recurso Redis tirando instantâneos dos dados valkey em um intervalo e limite especificados. O interval
é o tempo entre as exportações de instantâneos e o keysChangedThreshold
é o número de operações de mudança de chave necessárias para iniciar um instantâneo. Para obter mais informações sobre persistência, consulte Redis documentos: Persistência.
Verificações de integridade da integração de hospedagem
A integração de hospedagem Redis adiciona automaticamente uma verificação de integridade para o tipo de recurso apropriado. A verificação de saúde verifica se o server está em execução e se uma conexão pode ser estabelecida com ele.
A integração de hospedagem depende do 📦 AspNetCore.HealthChecks.Redis pacote NuGet.
integração Client
Para começar a usar o cache de saída do .NET Aspire Stack Exchange Redisclient integração, instale o 📦Aspire. StackExchange.Redis. OutputCaching pacote NuGet no projeto que consome client, ou seja, o projeto do aplicativo que usa o cache de saída client.
- .NET CLI
-
PackageReference
dotnet add package Aspire.StackExchange.Redis.OutputCaching
Adicionar cache de saída
No arquivo Program.cs do seu projeto que consome client, chame o método de extensão AddRedisOutputCache em qualquer IHostApplicationBuilder para registrar os serviços necessários para o cacheamento de saída.
builder.AddRedisOutputCache(connectionName: "cache");
Dica
O parâmetro connectionName
deve corresponder ao nome usado ao adicionar o recurso Redis no projeto de host do aplicativo. Para obter mais informações, consulte Adicionar Redisde recursos.
Dica
O parâmetro connectionName
deve corresponder ao nome usado ao adicionar o recurso Garnet no projeto de host do aplicativo. Para obter mais informações, consulte Adicionar recurso garnet.
Dica
O parâmetro connectionName
deve corresponder ao nome usado ao adicionar o recurso Valkey no projeto de host do aplicativo. Para obter mais informações, consulte Adicionar o recurso Valkey.
Adicione o middleware ao pipeline de processamento de solicitação chamando UseOutputCache(IApplicationBuilder):
var app = builder.Build();
app.UseOutputCache();
Para aplicativos mínimos de API, configure um endpoint para realizar o cache chamando CacheOutputou aplicando o OutputCacheAttribute, conforme mostrado nos seguintes exemplos:
app.MapGet("/cached", () => "Hello world!")
.CacheOutput();
app.MapGet(
"/attribute",
[OutputCache] () => "Hello world!");
Para aplicativos com controladores, aplique o atributo [OutputCache]
ao método de ação. Para aplicativos Razor Pages, aplique o atributo à classe de página Razor.
Configuração
A integração de cache de saída do .NET Aspire Stack Exchange Redis fornece várias opções para configurar a conexão Redis com base nos requisitos e convenções do seu projeto.
Usar uma string de conexão
Ao usar uma cadeia de conexão da seção de configuração ConnectionStrings
, você pode fornecer o nome da cadeia de conexão ao chamar AddRedisOutputCache:
builder.AddRedisOutputCache(connectionName: "cache");
Em seguida, a cadeia de conexão será recuperada da seção de configuração ConnectionStrings
:
{
"ConnectionStrings": {
"cache": "localhost:6379"
}
}
Para obter mais informações sobre como formatar essa cadeia de conexão, consulte os documentos de configuração do Stack Exchange Redis.
Usar provedores de configuração
A integração do .NET Aspire Stack Exchange Redis dá suporte a Microsoft.Extensions.Configuration. Ele carrega a StackExchangeRedisSettings da configuração usando a chave Aspire:StackExchange:Redis
. Exemplo appsettings.json que configura algumas das opções:
{
"Aspire": {
"StackExchange": {
"Redis": {
"ConnectionString": "localhost:6379",
"DisableHealthChecks": true,
"DisableTracing": false
}
}
}
}
Para obter o esquema JSON de integração Redisclient completo, consulte Aspire. StackExchange.Redis/ConfigurationSchema.json.
Usar delegados embutidos
Você também pode passar o delegado Action<StackExchangeRedisSettings> configurationSettings
para configurar algumas ou todas as opções diretamente, por exemplo, para desabilitar verificações de saúde usando código:
builder.AddRedisOutputCache(
"cache",
static settings => settings.DisableHealthChecks = true);
Você também pode configurar o
builder.AddRedisOutputCache(
"cache",
static settings => settings.ConnectTimeout = 3_000);
Exames de saúde
Por padrão, as integrações .NET.NET Aspire ativam verificações de integridade para todos os serviços. Para obter mais informações, consulte .NET.NET Aspire visão geral de integrações.
A integração de cache de saída do .NET Aspire Stack Exchange Redis gerencia os seguintes aspectos:
- Adiciona a verificação de integridade
StackExchange.Redis
, tenta abrir a conexão e gera quando ela falha. - Integra-se ao endpoint HTTP
/health
, que especifica que todas as verificações de integridade registradas devem passar para que o aplicativo seja considerado pronto para aceitar requisições.
Observabilidade e telemetria
As integrações .NET.NET Aspire configuram automaticamente log, rastreamento e métricas, que às vezes são conhecidas como os pilares da observabilidade. Para obter mais informações sobre a observabilidade e a telemetria de integração, consulte .NET.NET Aspire visão geral das integrações. Dependendo do serviço de backup, algumas integrações só podem dar suporte a alguns desses recursos. Por exemplo, algumas integrações dão suporte a registro em log e rastreamento, mas não a métricas. Os recursos de telemetria também podem ser desabilitados usando as técnicas apresentadas na seção Configuration.
Registro
A integração de cache de saída do .NET Aspire Stack Exchange Redis usa as seguintes categorias de log:
Aspire.StackExchange.Redis
Microsoft.AspNetCore.OutputCaching.StackExchangeRedis
Rastreamento
A integração de cache de saída do .NET AspireRedis Stack Exchange Redis emitirá as seguintes atividades de rastreamento usando OpenTelemetry:
OpenTelemetry.Instrumentation.StackExchangeRedis
Métricas
A integração de cache de saída do .NET Aspire Stack Exchange Redis atualmente não dá suporte a métricas por padrão devido a limitações com a biblioteca StackExchange.Redis
.
Azure Redis integração de hospedagem
Para implantar seus recursos de Redis em Azure, instale o pacote NuGet 📦Aspire.Hosting.Azure.Redis.
dotnet add package Aspire.Hosting.Azure.Redis
Adicionar Azure Cache for Redisserver recurso
Depois de instalar o pacote de hospedagem .NET AspireAzureRedis, chame o método de extensão AddAzureRedis
no projeto de aplicativo host:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddAzureRedis("azcache")
var exampleProject = builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
A chamada anterior para AddAzureRedis
configura o recurso Redisserver para ser implantado como um Azure Cache for Redis.
Importante
Por padrão, AddAzureRedis
configura a autenticação do Microsoft Entra ID. Isso requer alterações em aplicativos que precisam se conectar a esses recursos, por exemplo, em integrações client.
Adicionar saída Azure Cache for Redisclient
Por padrão, quando você chama AddAzureRedis
na sua integração de hospedagem Redis, ele configura o pacote 📦 da Microsoft para habilitar autenticação:AzureStackExchangeRedis para o pacote NuGet.
dotnet add package Microsoft.Azure.StackExchangeRedis
A conexão Redis pode ser consumida usando a integração client e o Microsoft.Azure.StackExchangeRedis
. Considere o seguinte código de configuração:
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;
});
Para obter mais informações, consulte o Microsoft.Azure. Repositório StackExchangeRedis.
Consulte também
- documentos do RedisStack Exchange
- .NET .NET Aspire integrações
- .NET Aspire GitHub repo
*: Redis é uma marca registrada da Redis Ltd. Todos os direitos reservados à Redis Ltd. Qualquer uso da Microsoft é apenas para fins referenciais e não indica nenhum patrocínio, endosso ou afiliação entre Redis e a Microsoft. Retornar àsuperior?