Delen via


integratie van AspireAzure Cache for Redis* ®

Inclusief:Hostingintegratie inbegrepen —&— Client integratie inbegrepenClient integratie

Azure Cache for Redis biedt een in-memory gegevensarchief op basis van de Redis software. Redis verbetert de prestaties en schaalbaarheid van een toepassing die intensief gebruikmaakt van back-endgegevensarchieven. Het kan grote hoeveelheden toepassingsaanvragen verwerken door veelgebruikte gegevens in het servergeheugen te bewaren, die snel kunnen worden geschreven naar en gelezen. Redis biedt een essentiële oplossing voor gegevensopslag met lage latentie en hoge doorvoer voor moderne toepassingen.

Azure Cache for Redis biedt zowel de Redis opensource (OSS Redis) als een commercieel product van Redis Inc. (Redis Enterprise) als een beheerde service. Het biedt beveiligde en toegewezen Redis serverexemplaren en volledige Redis API-compatibiliteit. Microsoft beheert de service, gehost op Azureen kan worden gebruikt door elke toepassing binnen of buiten Azure.

Met de AspireAzure Cache for Redis-integratie kunt u verbinding maken met bestaande Azure Cache for Redis-exemplaren, nieuwe exemplaren maken of een container lokaal uitvoeren vanuit .NET met de docker.io/library/redis containerimage.

Hostingintegratie

De AspireAzure Cache for Redis hosting integreert modellen van een AzureRedis-resource als het AzureRedisCacheResource-type. Als u toegang wilt krijgen tot dit type en API's om ze uit te drukken als resources in uw AppHost-project , voegt u het 📦Aspiretoe. Hosting.Azure.Redis NuGet-pakket:

dotnet add package Aspire.Hosting.Azure.Redis

Zie dotnet-pakket toevoegen of pakketafhankelijkheden beheren in .NET toepassingen voor meer informatie.

Azure Azure Cache for Redis-resource toevoegen

Roep in uw AppHost-project AddAzureRedis het builder exemplaar aan om een AzureAzure Cache for Redis resource toe te voegen, zoals wordt weergegeven in het volgende voorbeeld:

var builder = DistributedApplication.CreateBuilder(args);

var cache = builder.AddAzureRedis("azcache");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(cache);

// After adding all resources, run the app...

De voorafgaande aanroep van AddAzureRedis configureert de Redis-serverresource om te worden ingezet als een Azure Cache for Redis.

Belangrijk

Standaard configureert AddAzureRedisMicrosoft Entra ID authenticatie. Hiervoor moeten wijzigingen worden aangebracht in toepassingen die verbinding moeten maken met deze resources, bijvoorbeeld clientintegraties.

Aanbeveling

Wanneer u AddAzureRedisaanroept, wordt impliciet AddAzureProvisioningaangeroepen. Hiermee wordt ondersteuning toegevoegd voor het dynamisch genereren van Azure resources tijdens het opstarten van de app. De app moet het juiste abonnement en de juiste locatie configureren. Zie Lokale inrichting: Configuratie voor meer informatie.

Verbinding maken met een bestaande AzureAzure Cache for Redis

Mogelijk hebt u een bestaande AzureAzure Cache for Redis resource waarmee u verbinding wilt maken. U kunt een aanroep aaneenschakelen om aan te geven dat uw AzureRedisCacheResource een bestaande resource is.

var builder = DistributedApplication.CreateBuilder(args);

var existingRedisName = builder.AddParameter("existingRedisName");
var existingRedisResourceGroup = builder.AddParameter("existingRedisResourceGroup");

var cache = builder.AddAzureRedis("azcache")
                   .AsExisting(existingRedisName, existingRedisResourceGroup);

builder.AddProject<Projects.ExampleProject>()
       .WithReference(cache);

// After adding all resources, run the app...

Belangrijk

Wanneer u , RunAsExistingof methoden aanroept PublishAsExistingom te werken met resources die al aanwezig zijn in uw AsExisting abonnement, moet u bepaalde configuratiewaarden toevoegen aan uw AppHost om ervoor te zorgen dat Azure deze kunnen worden Aspire gevonden. De benodigde configuratiewaarden zijn SubscriptionId, AllowResourceGroupCreation, ResourceGroup en Location. Als u ze niet instelt, worden fouten met ontbrekende configuratie weergegeven in het Aspire dashboard. Zie Configuratie voor meer informatie over het instellen ervan.

Zie Azurevoor meer informatie over het behandelen van Azure Cache for RedisAzure bronnen als bestaande.

Notitie

U kunt ook een verbindingsreeks toevoegen aan de AppHost in plaats van een AzureAzure Cache for Redis resource weer te geven. Deze benadering is zwak getypt en werkt niet met roltoewijzingen of infrastructuuraanpassingen. Voor meer informatie, zie Bestaande Azure resources toevoegen met verbindingsreeksen.

Azure Azure Cache for Redis-resource uitvoeren als een container

De Azure Cache for Redis hostingintegratie ondersteunt het uitvoeren van de Redis-server als een lokale container. Dit is handig voor situaties waarin u de Redis-server lokaal wilt uitvoeren voor ontwikkelings- en testdoeleinden, zodat u geen Azure resource hoeft in te richten of verbinding wilt maken met een bestaande Azure Cache for Redis-server.

Als u de docker.io/library/redis-containerimage wilt gebruiken en het AzureAzure Cache for Redis-exemplaar lokaal als container wilt uitvoeren, koppelt u een oproep aan RunAsContainer, zoals in het volgende voorbeeld wordt getoond:

var builder = DistributedApplication.CreateBuilder(args);

var cache = builder.AddAzureRedis("azcache")
                   .RunAsContainer();

builder.AddProject<Projects.ExampleProject>()
       .WithReference(cache);

// After adding all resources, run the app...

Met de voorgaande code wordt de Redis resource geconfigureerd om lokaal in een container te worden uitgevoerd.

Aanbeveling

De RunAsContainer methode is handig voor lokale ontwikkeling en testen. Met de API wordt een optionele delegate ontsloten waarmee u de onderliggende configuratie van RedisResource kunt aanpassen, zoals het toevoegen van Redis Insights, Redis Commander, of het toevoegen van een gegevensvolume of databindmount. Zie de AspireRedis hostingintegratie voor meer informatie.

De AzureAzure Cache for Redis-resource configureren om toegangssleutelverificatie te gebruiken

De resource is standaard AzureAzure Cache for Redis geconfigureerd voor het gebruik van Microsoft Entra ID-verificatie . Als u wachtwoordverificatie wilt gebruiken (niet aanbevolen), kunt u de server configureren voor wachtwoordverificatie door de WithAccessKeyAuthentication methode aan te roepen:

var builder = DistributedApplication.CreateBuilder(args);

var cache = builder.AddAzureRedis("azcache")
                   .WithAccessKeyAuthentication();

builder.AddProject<Projects.ExampleProject>()
       .WithReference(cache);

// After adding all resources, run the app...

Met de voorgaande code wordt de AzureAzure Cache for Redis-resource geconfigureerd voor het gebruik van toegangssleutelverificatie. Hierdoor wordt de gegenereerde Bicep gewijzigd om toegangssleutelverificatie te gebruiken in plaats van Microsoft Entra ID-verificatie. Met andere woorden, de verbindingsreeks zal een wachtwoord bevatten en wordt toegevoegd aan een Azure Key Vault geheim bestand.

Provisioning-gegenereerde Bicep

Als u nieuw bent met Bicep, is het een domeinspecifieke taal voor het definiëren van Azure-resources. Met Aspire hoeft u Bicep niet handmatig te schrijven, omdat de voorzienings-API's Bicep voor u genereren. Wanneer u uw app publiceert, wordt de gegenereerde Bicep weergegeven naast het manifestbestand. Wanneer u een AzureAzure Cache for Redis resource toevoegt, wordt de volgende Bicep gegenereerd:

@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location

resource redis 'Microsoft.Cache/redis@2024-11-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

De voorgaande Bicep is een module die een AzureAzure Cache for Redis bron levert. Daarnaast worden roltoewijzingen gemaakt voor de Azure resource in een afzonderlijke module:

@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-11-01' existing = {
  name: redis_outputs_name
}

resource redis_contributor 'Microsoft.Cache/redis/accessPolicyAssignments@2024-11-01' = {
  name: guid(redis.id, principalId, 'Data Contributor')
  properties: {
    accessPolicyName: 'Data Contributor'
    objectId: principalId
    objectIdAlias: principalName
  }
  parent: redis
}

Naast de AzureAzure Cache for Redis wordt er ook een toegangsbeleidstoewijzing uitgevoerd om de toepassing toegang tot de cache te geven. De gegenereerde Bicep is een beginpunt en wordt beïnvloed door wijzigingen aan de voorzieningsinfrastructuur in C#. Aanpassingen aan het Bicep-bestand zullen direct overschreven worden, dus breng wijzigingen aan via de C#-inrichtings-API's zodat ze weerspiegeld worden in de gegenereerde bestanden.

Provisioninginfrastructuur aanpassen

Alle AspireAzure resources zijn subklassen van het AzureProvisioningResource type. Met dit type kunt u de gegenereerde Bicep aanpassen door een vloeiende API te bieden om de Azure-resources te configureren, met behulp van API ConfigureInfrastructure<T>(IResourceBuilder<T>, Action<AzureResourceInfrastructure>). U kunt bijvoorbeeld de kind, consistencyPolicy, locationsen meer configureren. In het volgende voorbeeld ziet u hoe u de AzureAzure Cache for Redis-resource aanpast:

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");
    });

De voorgaande code:

  • Koppelt een aanroep naar de ConfigureInfrastructure-API:
    • De parameter infra is een exemplaar van het AzureResourceInfrastructure type.
    • De voorzienbare resources worden opgehaald door de GetProvisionableResources() methode op te roepen.
    • De enkele RedisResource wordt opgehaald.
    • De Sku wordt ingesteld met een familie van BasicOrStandard, een naam van Standarden een capaciteit van 1.
    • Er wordt een tag toegevoegd aan de Redis resource met een sleutel van ExampleKey en een waarde van Example value.

Er zijn nog veel meer configuratieopties beschikbaar om de AzureAzure Cache for Redis resource aan te passen. Zie Azure.Provisioning.Redisvoor meer informatie. Zie Voor meer informatie over Azure.Aanpassen van provisioning.

Client integratie

Installeer het Aspire NuGet-pakket in het project dat de client gebruikt om aan de slag te gaan met de Redis Stack Exchange 📦-clientintegratie, oftewel het project voor de applicatie die de Aspire-client gebruikt. De Redis clientintegratie registreert een IConnectionMultiplexer-exemplaar waarmee u kunt communiceren Redis.

dotnet add package Aspire.StackExchange.Redis

Redis-client toevoegen

Roep in het Program.cs bestand van het clientgebruikte project de AddRedisClient-extensiemethode aan op elke IHostApplicationBuilder om een IConnectionMultiplexer te registreren voor gebruik via de container voor afhankelijkheidsinjectie. De methode gebruikt een verbindingsnaamparameter.

builder.AddRedisClient(connectionName: "cache");

Aanbeveling

De connectionName parameter moet overeenkomen met de naam die wordt gebruikt bij het toevoegen van de AzureAzure Cache for Redis resource in het AppHost-project. Voor meer informatie, zie Voeg AzureAzure Cache for Redis-bron toe.

Vervolgens kunt u het IConnectionMultiplexer exemplaar ophalen met behulp van afhankelijkheidsinjectie. Als u bijvoorbeeld de verbinding wilt ophalen uit een voorbeeldservice:

public class ExampleService(IConnectionMultiplexer connectionMux)
{
    // Use connection multiplexer...
}

Zie Afhankelijkheidsinjectie voor meer informatie over afhankelijkheidsinjectie.NET.

Geverifieerde AzureAzure Cache for Redis client toevoegen

Standaard, wanneer u AddAzureRedis aanroept in uw AppHost-project, configureert de Redis hostingintegratie Microsoft Entra ID. Als u verificatie in uw clienttoepassing wilt inschakelen, voegt u een verwijzing naar het Aspire.Microsoft.Azure.StackExchangeRedis pakket toe en gebruikt u de volgende code:

builder.AddRedisClientBuilder("cache")
       .WithAzureAuthentication();

Met deze vereenvoudigde benadering wordt de Redis cliënt automatisch geconfigureerd om Azure authenticatie te gebruiken met de juiste inloggegevens.

Keyed-Redis-client toevoegen

Er kunnen situaties zijn waarin u meerdere IConnectionMultiplexer exemplaren met verschillende verbindingsnamen wilt registreren. Als u keyed Redis-clients wilt registreren, roept u de methode AddKeyedRedisClient aan:

builder.AddKeyedRedisClient(name: "chat");
builder.AddKeyedRedisClient(name: "queue");

Vervolgens kunt u de IConnectionMultiplexer exemplaren ophalen met behulp van dependency injection. Als u bijvoorbeeld de verbinding wilt ophalen uit een voorbeeldservice:

public class ExampleService(
    [FromKeyedServices("chat")] IConnectionMultiplexer chatConnectionMux,
    [FromKeyedServices("queue")] IConnectionMultiplexer queueConnectionMux)
{
    // Use connections...
}

Zie voor meer informatie over gesleutelde services .NET afhankelijkheidsinjectie: Keyed Services.

Configuratie

De Aspire Stack Exchange Redis-clientintegratie biedt meerdere opties voor het configureren van de Redis-verbinding op basis van de vereisten en conventies van uw project.

Een verbindingsreeks gebruiken

Wanneer u een verbindingsreeks uit de sectie ConnectionStrings configuratie gebruikt, kunt u de naam van de verbindingsreeks opgeven bij het aanroepen van AddRedis:

builder.AddRedis("cache");

Vervolgens wordt de verbindingsreeks opgehaald uit de ConnectionStrings configuratiesectie:

{
  "ConnectionStrings": {
    "cache": "localhost:6379"
  }
}

Zie de stack Exchange-configuratiedocumenten Redisvoor meer informatie over het opmaken van deze verbindingsreeks.

Configuratieproviders gebruiken

De integratie van Aspire Stack Exchange Redis ondersteunt Microsoft.Extensions.Configuration. Het laadt de StackExchangeRedisSettings uit de configuratie door de Aspire:StackExchange:Redis-sleutel te gebruiken. Voorbeeld appsettings.json waarmee een aantal van de opties wordt geconfigureerd:

{
  "Aspire": {
    "StackExchange": {
      "Redis": {
        "ConfigurationOptions": {
          "ConnectTimeout": 3000,
          "ConnectRetry": 2
        },
        "DisableHealthChecks": true,
        "DisableTracing": false
      }
    }
  }
}

Zie voor het volledige clientintegratieschema RedisJSONAspire.StackExchange.Redis/ConfigurationSchema.json.

Benoemde configuratie gebruiken

De Aspire Stack Exchange-integratie Redis ondersteunt benoemde configuratie, waarmee u meerdere exemplaren van hetzelfde resourcetype met verschillende instellingen kunt configureren. De benoemde configuratie maakt gebruik van de verbindingsnaam als een sleutel in het hoofdgedeelte van de configuratie.

{
  "Aspire": {
    "StackExchange": {
      "Redis": {
        "cache1": {
          "ConfigurationOptions": {
            "ConnectTimeout": 3000,
            "ConnectRetry": 2
          },
          "DisableHealthChecks": true
        },
        "cache2": {
          "ConfigurationOptions": {
            "ConnectTimeout": 5000,
            "ConnectRetry": 3
          },
          "DisableTracing": true
        }
      }
    }
  }
}

In dit voorbeeld kunnen de cache1 en cache2 verbindingsnamen worden gebruikt wanneer AddKeyedRedisClient wordt aangeroepen:

builder.AddKeyedRedisClient("cache1");
builder.AddKeyedRedisClient("cache2");

Benoemde configuratie heeft voorrang op de configuratie op het hoogste niveau. Als beide zijn opgegeven, overschrijven de instellingen van de benoemde configuratie de instellingen op het hoogste niveau.

Inline delegates gebruiken

U kunt de Action<StackExchangeRedisSettings> delegate ook doorgeven om enkele of alle opties inline in te stellen, bijvoorbeeld om DisableTracingte configureren:

builder.AddRedisClient(
    "cache",
    static settings => settings.DisableTracing = true);

gezondheidscontroles voor Client-integratie

Aspire hebben standaard gezondheidscontroles ingeschakeld voor alle diensten. Op dezelfde manier maken veel Aspirehostingintegraties ook statuscontrole-eindpunten mogelijk. Zie voor meer informatie:

De integratie van Aspire Stack Exchange Redis verwerkt het volgende:

  • Voegt de gezondheidscontrole toe wanneer StackExchangeRedisSettings.DisableHealthChecksfalseis, wat probeert verbinding te maken met de containerinstantie.
  • Integreert met het /health HTTP-eindpunt, dat aangeeft dat alle geregistreerde gezondheidscontroles moeten slagen voordat de app verkeer kan accepteren.

Waarneembaarheid en telemetrie

Aspire Integraties stellen automatisch configuraties voor logboekregistratie, tracering en metrische gegevens in, die ook wel de pijlers van waarneembaarheid worden genoemd. Zie het overzicht van integratieobserveerbaarheid en telemetrie voor meer informatie over integratieobserveerbaarheid en telemetrieAspire. Afhankelijk van de back-upservice ondersteunen sommige integraties mogelijk slechts enkele van deze functies. Sommige integraties ondersteunen bijvoorbeeld logboekregistratie en tracering, maar geen metrische gegevens. Telemetriefuncties kunnen ook worden uitgeschakeld met behulp van de technieken die worden weergegeven in de sectie Configuratie .

Loggen

De integratie van Aspire Stack Exchange Redis maakt gebruik van de volgende logboekcategorieën:

  • Aspire.StackExchange.Redis

Opsporing

De integratie van Aspire Stack Exchange Redis verzendt de volgende traceringsactiviteiten met behulp van OpenTelemetry:

  • OpenTelemetry.Instrumentation.StackExchangeRedis

Statistieken

De integratie van Aspire Stack Exchange Redis biedt momenteel geen standaard ondersteuning voor metriek vanwege beperkingen met de StackExchange.Redis-bibliotheek.

Zie ook

*: Redis is een gedeponeerd handelsmerk van Redis Ltd. Alle rechten daarin zijn voorbehouden aan Redis Ltd. Elk gebruik door Microsoft is uitsluitend bedoeld voor referentiële doeleinden en geeft geen enkele sponsorship, goedkeuring of relatie tussen Redis en Microsoft aan. Terug naar boven?