Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Includes: Hosting integration and
Client integration
Azure Cache for Redis fornece um armazenamento de dados na memória com base no software Redis. Redis melhora muito o desempenho e a escalabilidade de um aplicativo que usa armazenamentos de dados de back-end. Ele é capaz de processar grandes volumes de solicitações de aplicativo mantendo dados acessados com frequência na memória do servidor, que podem ser gravados e lidos rapidamente. Redis traz uma solução crítica de armazenamento de dados de baixa latência e alta taxa de transferência para aplicativos modernos.
Azure Cache for Redis oferece o Redis software livre (OSS Redis) e um produto comercial da Redis Inc. (Redis Enterprise) como um serviço gerenciado. Ele fornece instâncias de servidor Redis seguras e dedicadas e compatibilidade de API de Redis completa. A Microsoft opera o serviço, hospedado em Azuree utilizável por qualquer aplicativo dentro ou fora de Azure.
A integração .NET AspireAzure Cache for Redis permite que você se conecte a instâncias de Azure Cache for Redis existentes ou crie novas instâncias de .NET com a imagem de contêiner docker.io/library/redis
.
Integração de hospedagem
O modelo de integração de hospedagem .NET AspireAzure Cache for Redis modela um recurso AzureRedis como o tipo AzureRedisCacheResource. To access this type and APIs for expressing them as resources in your app host project, add the 📦Aspire.Hosting.Azure.Redis NuGet package:
dotnet add package Aspire.Hosting.Azure.Redis
For more information, see dotnet add package or Manage package dependencies in .NET applications.
Adicionar AzureAzure Cache for Redis recurso
No projeto de host do aplicativo, chame AddAzureRedis na instância builder
para adicionar um recurso AzureAzure Cache for Redis, conforme mostrado no exemplo a seguir:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddAzureRedis("azcache");
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
A chamada anterior para AddAzureRedis
configura o recurso de servidor Redis para ser implantado como um Azure Cache for Redis.
Important
By default, AddAzureRedis
configures Microsoft Entra ID authentication. Isso requer alterações em aplicativos que precisam se conectar a esses recursos, por exemplo, integrações de cliente.
Tip
Quando você chama AddAzureRedis, ele chama implicitamente AddAzureProvisioning— o que adiciona suporte para gerar recursos Azure dinamicamente durante a inicialização do aplicativo. O aplicativo deve configurar a assinatura e o local apropriados. Para obter mais informações, consulte Provisionamento local: Configuração.
Generated provisioning Bicep
If you're new to Bicep, it's a domain-specific language for defining Azure resources. Com .NET.NET Aspire, você não precisa escrever Bicep manualmente, pois as APIs de provisionamento geram Bicep para você. When you publish your app, the generated Bicep is output alongside the manifest file. When you add an AzureAzure Cache for Redis resource, the following Bicep is generated:
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location
resource redis 'Microsoft.Cache/redis@2024-03-01' = {
name: take('redis-${uniqueString(resourceGroup().id)}', 63)
location: location
properties: {
sku: {
name: 'Basic'
family: 'C'
capacity: 1
}
enableNonSslPort: false
disableAccessKeyAuthentication: true
minimumTlsVersion: '1.2'
redisConfiguration: {
'aad-enabled': 'true'
}
}
tags: {
'aspire-resource-name': 'redis'
}
}
output connectionString string = '${redis.properties.hostName},ssl=true'
output name string = redis.name
O Bicep mencionado anteriormente é um módulo que provisiona um AzureAzure Cache for Redis recurso. Além disso, as atribuições de função são criadas para o Azure recurso em um módulo separado:
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location
param redis_outputs_name string
param principalId string
param principalName string
resource redis 'Microsoft.Cache/redis@2024-03-01' existing = {
name: redis_outputs_name
}
resource redis_contributor 'Microsoft.Cache/redis/accessPolicyAssignments@2024-03-01' = {
name: guid(redis.id, principalId, 'Data Contributor')
properties: {
accessPolicyName: 'Data Contributor'
objectId: principalId
objectIdAlias: principalName
}
parent: redis
}
In addition to the AzureAzure Cache for Redis, it also provisions an access policy assignment to the application access to the cache. O Bicep gerado é um ponto de partida e é influenciado por alterações na infraestrutura de provisionamento em C#. Customizations to the Bicep file directly will be overwritten, so make changes through the C# provisioning APIs to ensure they are reflected in the generated files.
Personalizar a infraestrutura de provisionamento
Todos os recursos .NET AspireAzure são subclasses do tipo AzureProvisioningResource. This type enables the customization of the generated Bicep by providing a fluent API to configure the Azure resources—using the ConfigureInfrastructure<T>(IResourceBuilder<T>, Action<AzureResourceInfrastructure>) API. Por exemplo, você pode configurar o kind
, consistencyPolicy
, locations
e muito mais. O exemplo a seguir demonstra como personalizar o recurso de AzureAzure Cache for Redis:
builder.AddAzureRedis("redis")
.WithAccessKeyAuthentication()
.ConfigureInfrastructure(infra =>
{
var redis = infra.GetProvisionableResources()
.OfType<RedisResource>()
.Single();
redis.Sku = new()
{
Family = RedisSkuFamily.BasicOrStandard,
Name = RedisSkuName.Standard,
Capacity = 1,
};
redis.Tags.Add("ExampleKey", "Example value");
});
O código anterior:
- Chains a call to the ConfigureInfrastructure API:
- O parâmetro
infra
é uma instância do tipo AzureResourceInfrastructure. - Os recursos provisionáveis são recuperados chamando o método GetProvisionableResources().
- The single RedisResource is retrieved.
- The
Sku
is set with a family ofBasicOrStandard
, a name ofStandard
, and a capacity of1
. - Uma etiqueta é adicionada ao recurso Redis com uma chave
ExampleKey
e um valorExample value
.
- O parâmetro
Há muito mais opções de configuração disponíveis para personalizar o recurso AzureAzure Cache for Redis. Para obter mais informações, consulte Azure.Provisioning.Redis. For more information, see Azure.Provisioning customization.
Conectar-se a um AzureAzure Cache for Redis existente
Você pode ter uma AzureAzure Cache for Redis existente à qual deseja se conectar. Em vez de representar um novo recurso de AzureAzure Cache for Redis, você pode adicionar uma cadeia de conexão ao host do aplicativo. Para adicionar uma conexão a um AzureAzure Cache for Redisexistente, chame o método AddConnectionString:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddConnectionString("azure-redis");
builder.AddProject<Projects.WebApplication>("web")
.WithReference(cache);
// After adding all resources, run the app...
Nota
As cadeias de conexão são usadas para representar uma ampla gama de informações de conexão, incluindo conexões de banco de dados, agentes de mensagens, URIs de ponto de extremidade e outros serviços. Em .NET.NET Aspire nomenclatura, o termo "cadeia de conexão" é usado para representar qualquer tipo de informação de conexão.
A cadeia de conexão é configurada na configuração do host do aplicativo, normalmente em Segredos do Usuário, na seção ConnectionStrings
. O host do aplicativo injeta essa cadeia de conexão como uma variável de ambiente em todos os recursos dependentes, por exemplo:
{
"ConnectionStrings": {
"azure-redis": "<your-redis-name>.redis.cache.windows.net:6380,ssl=true,abortConnect=False"
}
}
O recurso dependente pode acessar a cadeia de conexão injetada chamando o método GetConnectionString e passando o nome da conexão como o parâmetro, nesse caso "azure-redis"
. A API de GetConnectionString
é abreviada para IConfiguration.GetSection("ConnectionStrings")[name]
.
Executar AzureAzure Cache for Redis recurso como um contêiner
A Azure Cache for Redis integração de hospedagem dá suporte à execução do servidor Redis como um contêiner local. Isso é benéfico para situações em que você deseja executar o servidor Redis localmente para fins de desenvolvimento e teste, evitando a necessidade de provisionar um recurso Azure ou se conectar a um servidor Azure Cache for Redis existente.
Para usar a imagem de contêiner docker.io/library/redis
e executar a instância AzureAzure Cache for Redis como um contêiner localmente, encadeia uma chamada para RunAsContainer, conforme mostrado no exemplo a seguir:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddAzureRedis("azcache")
.RunAsContainer();
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
O código anterior configura o recurso Redis a ser executado localmente em um contêiner.
Tip
O método RunAsContainer
é útil para desenvolvimento e teste locais. The API exposes an optional delegate that enables you to customize the underlying RedisResource configuration, such adding Redis Insights, Redis Commander, adding a data volume or data bind mount. Para obter mais informações, consulte a integração de hospedagem .NET AspireRedis.
Configurar o recurso AzureAzure Cache for Redis para usar a autenticação de chave de acesso
Por padrão, o recurso AzureAzure Cache for Redis é configurado para usar a autenticação do Microsoft Entra ID . Se você quiser usar a autenticação de senha (não recomendado), poderá configurar o servidor para usar a autenticação de senha chamando o método WithAccessKeyAuthentication:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddAzureRedis("azcache")
.WithAccessKeyAuthentication();
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
O código anterior configura o recurso AzureAzure Cache for Redis para usar a autenticação de chave de acesso. This alters the generated Bicep to use access key authentication instead of Microsoft Entra ID authentication. Em outras palavras, a cadeia de conexão conterá uma senha e será adicionada a um segredo Azure Key Vault.
integração Client
To get started with the .NET AspireRedis distributed caching integration, install the 📦Aspire.StackExchange.Redis.DistributedCaching NuGet package in the client-consuming project, i.e., the project for the application that uses the Redis distributed caching client. A integração do cliente Redis registra uma instância de IDistributedCache que você pode usar para interagir com Redis.
dotnet add package Aspire.StackExchange.Redis.DistributedCaching
Adicionar Redis cliente de cache distribuído
In the Program.cs file of your client-consuming project, call the AddRedisDistributedCache extension to register the required services for distributed caching and add a IDistributedCache for use via the dependency injection container.
builder.AddRedisDistributedCache(connectionName: "cache");
Tip
O parâmetro connectionName
deve corresponder ao nome usado ao adicionar o recurso AzureAzure Cache for Redis no projeto de host do aplicativo. For more information, see Add AzureAzure Cache for Redis resource.
You can then retrieve the IDistributedCache
instance using dependency injection. Por exemplo, para recuperar o cache de um serviço:
public class ExampleService(IDistributedCache cache)
{
// Use cache...
}
For more information on dependency injection, see .NET dependency injection.
Adicionar AzureAzure Cache for Redis cliente distribuído autenticado
By default, when you call AddAzureRedis in your app host project, the Redis hosting integration configures 📦 Microsoft.Azure.StackExchangeRedis NuGet package to enable authentication:
dotnet add package Microsoft.Azure.StackExchangeRedis
The Redis connection can be consumed using the client integration and 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.AddRedisDistributedCache("cache", configureOptions: options =>
{
options.Defaults = configurationOptions.Defaults;
});
For more information, see the Microsoft.Azure.StackExchangeRedis repo.
Add keyed Redis client
Pode haver situações em que você deseja registrar várias instâncias de IDistributedCache
com nomes de conexão diferentes. To register keyed Redis clients, call the AddKeyedRedisDistributedCache method:
builder.AddKeyedRedisDistributedCache(name: "chat");
builder.AddKeyedRedisDistributedCache(name: "product");
Then you can retrieve the IDistributedCache
instances using dependency injection. Por exemplo, para recuperar a conexão de um serviço de exemplo:
public class ExampleService(
[FromKeyedServices("chat")] IDistributedCache chatCache,
[FromKeyedServices("product")] IDistributedCache productCache)
{
// Use caches...
}
For more information on keyed services, see .NET dependency injection: Keyed services.
Configuração
A integração de cache distribuído .NET AspireRedis fornece várias opções para configurar a conexão Redis com base nos requisitos e convenções do seu projeto.
Use a connection string
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 builder.AddRedisDistributedCache
:
builder.AddRedisDistributedCache("cache");
Em seguida, a cadeia de conexão será recuperada da seção de configuração do 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 de cache distribuída do .NET Aspire Stack Exchange Redis dá suporte a Microsoft.Extensions.Configuration. It loads the StackExchangeRedisSettings from configuration by using the Aspire:StackExchange:Redis
key. Exemplo appsettings.json que configura algumas das opções:
{
"Aspire": {
"StackExchange": {
"Redis": {
"ConfigurationOptions": {
"ConnectTimeout": 3000,
"ConnectRetry": 2
},
"DisableHealthChecks": true,
"DisableTracing": false
}
}
}
}
For the complete Redis distributed caching client integration JSON schema, see Aspire.StackExchange.Redis.DistributedCaching/ConfigurationSchema.json.
Use inline delegates
You can also pass the Action<StackExchangeRedisSettings>
delegate to set up some or all the options inline, for example to configure DisableTracing
:
builder.AddRedisDistributedCache(
"cache",
settings => settings.DisableTracing = true);
Você também pode configurar o ConfigurationOptions usando o parâmetro delegado Action<ConfigurationOptions> configureOptions
do método AddRedisDistributedCache
. Por exemplo, para definir o tempo limite da conexão:
builder.AddRedisDistributedCache(
"cache",
static settings => settings.ConnectTimeout = 3_000);
Client integration health checks
By default, .NET.NET Aspireclient integrations have health checks enabled for all services. Similarly, many .NET.NET Aspirehosting integrations also enable health check endpoints. Para obter mais informações, consulte:
The .NET AspireRedis distributed caching integration handles the following:
- Adds the health check when StackExchangeRedisSettings.DisableHealthChecks is
false
, which attempts to connect to the container instance. - Integra-se ao endpoint HTTP
/health
, que especifica que todas as verificações de integridade registradas devem passar para que o aplicativo seja considerado preparado para receber tráfego.
Observabilidade e telemetria
.NET .NET Aspire integrações configuram automaticamente registros, 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.
Logging
A integração de cache distribuída .NET AspireRedis usa as seguintes categorias de log:
Aspire.StackExchange.Redis
Microsoft.Extensions.Caching.StackExchangeRedis
Tracing
The .NET AspireRedis distributed caching integration will emit the following Tracing activities using OpenTelemetry:
OpenTelemetry.Instrumentation.StackExchangeRedis
Métricas
The .NET AspireRedis Distributed caching integration currently doesn't support metrics by default due to limitations with the StackExchange.Redis
library.
Consulte também
- Azure Azure Cache for Redis documentos
- Stack Exchange Redis docs
- .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?