Delen via


Gedistribueerde caching integratie AspireRedis®*

Inclusief:Hostingintegratie inbegrepen —&— Client integratie inbegrepenClient integratie

Leer hoe je de AspireRedis integratie van gedistribueerde caching kunt gebruiken. De Aspire.StackExchange.Redis.DistributedCaching bibliotheek wordt gebruikt om een IDistributedCache-provider te registreren die wordt ondersteund door een Redis server met de docker.io/library/redis containerinstallatiekopieën.

Leer hoe je de AspireRedis integratie van gedistribueerde caching kunt gebruiken. De Aspire.StackExchange.Redis.DistributedCaching bibliotheek wordt gebruikt om een IDistributedCache-provider te registreren die wordt ondersteund door een Garnet-server met de ghcr.io/microsoft/garnet containerinstallatiekopieën.

Leer hoe je de AspireRedis integratie van gedistribueerde caching kunt gebruiken. De Aspire.StackExchange.Redis.DistributedCaching bibliotheek wordt gebruikt om een IDistributedCache-provider te registreren die wordt ondersteund door een Valkey-server met de docker.io/valkey/valkey containerinstallatiekopieën.

Hostingintegratie

De Redis hostintegratie modelleert een Redis-resource als de RedisResource-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. Gastvrijheid.Redis NuGet-pakket:

dotnet add package Aspire.Hosting.Redis

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

Redis-resource toevoegen

Roep in uw AppHost-project AddRedis het builder exemplaar aan om een Redis resource toe te voegen:

var builder = DistributedApplication.CreateBuilder(args);

var cache = builder.AddRedis("cache");

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

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

Wanneer Aspire een containerimage aan de AppHost toevoegt, zoals weergegeven in het vorige voorbeeld met de docker.io/Redis/Redis containerimage, wordt er een nieuw Redis exemplaar op uw lokale machine gemaakt. Er wordt een verwijzing naar uw Redis resource (de variabele cache) toegevoegd aan de ExampleProject.

De methode WithReference configureert een verbinding in de ExampleProject met de naam "cache". Zie de levenscyclus van containerresources voor meer informatie.

Aanbeveling

Als u liever verbinding wilt maken met een bestaand Redis exemplaar, roept u in plaats daarvan AddConnectionString aan. Zie Referentie voor bestaande resources voor meer informatie.

Redis resource toevoegen met Redis Insights

Als u de Redis inzichten aan de Redis resource wilt toevoegen, roept u de WithRedisInsight methode aan:

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 is een gratis grafische interface voor het analyseren van Redis gegevens in alle besturingssystemen en Redis implementaties met behulp van onze AI-assistent, Redis Copilot. Aspire voegt een andere containerafbeelding docker.io/redis/redisinsight toe aan de AppHost waarop de commando-app wordt uitgevoerd.

Notitie

Om de hostpoort voor de RedisInsightResource-keten in te stellen, doe een aanroep naar de WithHostPort-API en geef het gewenste poortnummer op.

Redis resource toevoegen met Redis Commander

Als u de Redis Commandant wilt toevoegen aan de Redis resource, roept u de WithRedisCommander methode aan:

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 is een Node.js webtoepassing die wordt gebruikt voor het weergeven, bewerken en beheren van een Redis Database. Aspire voegt een andere containerafbeelding docker.io/rediscommander/redis-commander toe aan de AppHost waarop de commander-app wordt uitgevoerd.

Aanbeveling

Om de hostpoort voor de RedisCommanderResource-keten in te stellen, doe een aanroep naar de WithHostPort-API en geef het gewenste poortnummer op.

Redis resource toevoegen met gegevensvolume

Als u een gegevensvolume wilt toevoegen aan de Redis-resource, roept u de methode WithDataVolume aan voor de Redis resource:

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...

Het gegevensvolume wordt gebruikt om de Redis gegevens buiten de levenscyclus van de container te behouden. Het gegevensvolume wordt gekoppeld aan het /data pad in de Redis container en wanneer er geen name parameter wordt opgegeven, wordt de naam willekeurig gegenereerd. Zie de documenten Volumes voor meer informatie over gegevensvolumes en details over waarom deze de voorkeur hebben boven bind mountsDocker.

Redis resource toevoegen met koppeling voor gegevensbinding

Als u een koppeling voor gegevensbinding wilt toevoegen aan de Redis-resource, roept u de WithDataBindMount methode aan:

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...

Belangrijk

Data-bindmounts hebben beperkte functionaliteit vergeleken met volumes, die betere prestaties, portabiliteit en beveiliging bieden, waardoor ze geschikter zijn voor productieomgevingen. Bind mounts bieden echter directe toegang tot en wijziging van bestanden op het hostsysteem, ideaal voor ontwikkeling en testen waarbij realtime wijzigingen nodig zijn.

Gegevenskoppelingen vertrouwen op het bestandssysteem van de hostcomputer om de Redis gegevens te behouden bij het herstarten van de container. De data-bindmount wordt gekoppeld aan de C:\Redis\Data op Windows (of /Redis/Data op Unix) pad op de hostmachine in de Redis container. Voor meer informatie over gegevenskoppelingen, zie docs: Bind mountsDocker.

Redis-resource toevoegen met persistent gedrag

Als u persistentie wilt toevoegen aan de Redis-resource, roept u de methode WithPersistence aan met het gegevensvolume of de koppeling voor gegevensbinding:

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...

De voorgaande code voegt persistentie toe aan de Redis resource door momentopnamen te maken van de Redis gegevens met een opgegeven interval en drempelwaarde. De interval is tijd tussen momentopnameexports en de keysChangedThreshold is het aantal belangrijke wijzigingsbewerkingen dat nodig is om een momentopname te activeren. Zie de documenten: Persistentie voor meer informatie over persistentieRedis.

De Garnet-hostingintegratie modelleert een Garnet-resource als het GarnetResource-type. Voor toegang tot dit type en API's waarmee u het kunt toevoegen aan uw 📦Aspire. Hosting.Garnet NuGet-pakket in het AppHost-project .

dotnet add package Aspire.Hosting.Garnet

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

Garnet-resource toevoegen

Roep in uw AppHost-project AddGarnet het builder exemplaar aan om een Garnet-resource toe te voegen:

var builder = DistributedApplication.CreateBuilder(args);

var cache = builder.AddGarnet("cache");

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

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

Wanneer Aspire een containerafbeelding toevoegt aan de AppHost, zoals wordt weergegeven in het vorige voorbeeld met de ghcr.io/microsoft/garnet afbeelding, wordt er een nieuw Garnet-exemplaar op uw lokale computer gemaakt. Er wordt een verwijzing naar uw Garnet-resource (de cache variabele) toegevoegd aan de ExampleProject.

De methode WithReference configureert een verbinding in de ExampleProject met de naam "cache". Zie de levenscyclus van containerresources voor meer informatie.

Aanbeveling

Als u liever verbinding wilt maken met een bestaand Garnet-exemplaar, roept u in plaats daarvan AddConnectionString aan. Zie Referentie voor bestaande resources voor meer informatie.

Garnet-resource toevoegen met gegevensvolume

Als u een gegevensvolume wilt toevoegen aan de Garnet-resource, roept u de AddGarnet methode aan op de Garnet-resource:

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...

Het gegevensvolume wordt gebruikt om de Garnet-gegevens buiten de levenscyclus van de container te behouden. Het gegevensvolume wordt gekoppeld aan het /data pad in de Garnet-container en wanneer er geen name parameter wordt opgegeven, wordt de naam willekeurig gegenereerd. Zie de documenten Volumes voor meer informatie over gegevensvolumes en details over waarom deze de voorkeur hebben boven bind mountsDocker.

Garnet-resource toevoegen met gegevenskoppeling

Als u een koppeling voor gegevensbinding wilt toevoegen aan de Garnet-resource, roept u de WithDataBindMount-methode aan:

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...

Belangrijk

Data-bindmounts hebben beperkte functionaliteit vergeleken met volumes, die betere prestaties, portabiliteit en beveiliging bieden, waardoor ze geschikter zijn voor productieomgevingen. Bind mounts bieden echter directe toegang tot en wijziging van bestanden op het hostsysteem, ideaal voor ontwikkeling en testen waarbij realtime wijzigingen nodig zijn.

Gegevensbind-mounts maken gebruik van het bestandssysteem van de hostcomputer om de Garnet-gegevens te behouden bij het opnieuw starten van de container. De koppeling voor gegevensbinding wordt gekoppeld aan de C:\Garnet\Data in Windows (of /Garnet/Data op Unix) op de hostcomputer in de Garnet-container. Voor meer informatie over gegevenskoppelingen, zie docs: Bind mountsDocker.

Garnet-resource toevoegen met persistentie

Als u persistentie wilt toevoegen aan de Garnet-resource, roept u de WithPersistence-methode aan met het gegevensvolume of de koppeling voor gegevensbinding:

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...

De voorgaande code voegt persistentie toe aan de Redis resource door momentopnamen van de Garnet-gegevens met een opgegeven interval en drempelwaarde te maken. De interval is tijd tussen momentopnameexports en de keysChangedThreshold is het aantal belangrijke wijzigingsbewerkingen dat nodig is om een momentopname te activeren. Zie de documenten: Persistentie voor meer informatie over persistentieRedis.

De hostingintegratie van Valkey modelleert een Valkey-resource als het ValkeyResource-type. Voor toegang tot dit type en API's waarmee u het kunt toevoegen aan uw 📦Aspire. Hosting.Valkey NuGet-pakket in het AppHost-project .

dotnet add package Aspire.Hosting.Valkey

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

Valkey-resource toevoegen

Roep in uw AppHost-project AddValkey het builder exemplaar aan om een Valkey-resource toe te voegen:

var builder = DistributedApplication.CreateBuilder(args);

var cache = builder.AddValkey("cache");

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

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

Wanneer Aspire een containerafbeelding toevoegt aan de AppHost, zoals wordt weergegeven in het vorige voorbeeld met de docker.io/valkey/valkey afbeelding, wordt er een nieuwe Valkey-instantie aangemaakt op uw lokale computer. Er wordt een verwijzing naar uw Valkey-resource (de cache variabele) toegevoegd aan de ExampleProject.

De methode WithReference configureert een verbinding in de ExampleProject met de naam "cache". Zie de levenscyclus van containerresources voor meer informatie.

Aanbeveling

Als u liever verbinding maakt met een bestaand Valkey-exemplaar, roept u in plaats daarvan AddConnectionString aan. Zie Referentie voor bestaande resources voor meer informatie.

Valkey-resource toevoegen met gegevensvolume

Als u een gegevensvolume wilt toevoegen aan de Valkey-resource, roept u de AddValkey methode aan op de Valkey-resource:

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...

Het gegevensvolume wordt gebruikt om de Valkey-gegevens buiten de levenscyclus van de container te behouden. Het gegevensvolume wordt gekoppeld aan het /data pad in de Valkey-container en wanneer er geen name parameter wordt opgegeven, wordt de naam willekeurig gegenereerd. Zie de documenten Volumes voor meer informatie over gegevensvolumes en details over waarom deze de voorkeur hebben boven bind mountsDocker.

Valkey-resource toevoegen met koppeling voor gegevensbinding

Om een gegevensbinding aan de Valkey-resource toe te voegen, roept u de methode WithDataBindMount aan.

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...

Belangrijk

Data-bindmounts hebben beperkte functionaliteit vergeleken met volumes, die betere prestaties, portabiliteit en beveiliging bieden, waardoor ze geschikter zijn voor productieomgevingen. Bind mounts bieden echter directe toegang tot en wijziging van bestanden op het hostsysteem, ideaal voor ontwikkeling en testen waarbij realtime wijzigingen nodig zijn.

Bindmontages zijn afhankelijk van het bestandssysteem van de hostmachine om de Valkey-gegevens bij containerherstarts te bewaren. De koppeling voor gegevensbinding wordt gekoppeld aan de C:\Valkey\Data in Windows (of /Valkey/Data op Unix) op de hostcomputer in de Valkey-container. Voor meer informatie over gegevenskoppelingen, zie docs: Bind mountsDocker.

Valkey-resource toevoegen met persistentie

Als u persistentie wilt toevoegen aan de Valkey-resource, roept u de methode WithPersistence aan met het gegevensvolume of de koppeling voor gegevensbinding:

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...

De voorgaande code voegt persistentie toe aan de Redis resource door momentopnamen van de Valkey-gegevens te maken met een opgegeven interval en drempelwaarde. De interval is tijd tussen momentopnameexports en de keysChangedThreshold is het aantal belangrijke wijzigingsbewerkingen dat nodig is om een momentopname te activeren. Zie de documenten: Persistentie voor meer informatie over persistentieRedis.

Gezondheidsonderzoeken voor hostingintegratie

De Redis hostingintegratie voegt automatisch een statuscontrole toe voor het juiste resourcetype. De gezondheidscontrole controleert of de server actief is en of er een verbinding tot stand kan worden gebracht.

De hostingintegratie is afhankelijk van aspNetCore.HealthChecks📦.Redis NuGet-pakket.

integratie Client

Installeer de Aspire NuGet-pakket in het project dat gebruikmaakt van de client, om aan de slag te gaan met de Redis📦 gedistribueerde cache-integratie. Dit is dat wil zeggen, het project voor de toepassing die de Aspire gedistribueerde cacheclient gebruikt. De Redis-clientintegratie registreert een IDistributedCache exemplaar dat u kunt gebruiken om met Rediste communiceren.

dotnet add package Aspire.StackExchange.Redis.DistributedCaching

Redis-client toevoegen

Roep in het Program.cs bestand van het clientgebruikte project de AddRedisDistributedCache-extensie aan om de vereiste services voor gedistribueerde caching te registreren en een IDistributedCache toe te voegen voor gebruik via de container voor afhankelijkheidsinjectie.

builder.AddRedisDistributedCache(connectionName: "cache");

Aanbeveling

De connectionName parameter moet overeenkomen met de naam die wordt gebruikt bij het toevoegen van de Redis resource in het AppHost-project. Zie Resource toevoegen Redisvoor meer informatie.

Aanbeveling

De connectionName parameter moet overeenkomen met de naam die wordt gebruikt bij het toevoegen van de Garnet-resource in het AppHost-project. Zie Garnet-resource toevoegen voor meer informatie.

Aanbeveling

De connectionName parameter moet overeenkomen met de naam die wordt gebruikt bij het toevoegen van de Valkey-resource in het AppHost-project. Zie Valkey-resource toevoegen voor meer informatie.

Vervolgens kunt u het IDistributedCache exemplaar ophalen met behulp van afhankelijkheidsinjectie. Bijvoorbeeld om de cache op te halen uit een service:

public class ExampleService(IDistributedCache cache)
{
    // Use cache...
}

Zie Afhankelijkheidsinjectie voor meer informatie over afhankelijkheidsinjectie.NET.

Keyed Redis-client toevoegen

Vanwege de beperkingen kunt u niet meerdere IDistributedCache exemplaren tegelijk registreren. Er kunnen echter scenario's zijn waarin u meerdere Redis clients moet registreren en een specifiek IDistributedCache exemplaar voor een bepaalde verbindingsnaam moet gebruiken. Als u een sleutelclient Redis wilt registreren die wordt gebruikt voor de IDistributedCache service, roept u de AddKeyedRedisDistributedCache methode aan:

builder.AddKeyedRedisClient(name: "chat");
builder.AddKeyedRedisDistributedCache(name: "product");

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

public class ExampleService(
    [FromKeyedServices("chat")] IConnectionMultiplexer chatConnectionMux,
    IDistributedCache productCache)
{
    // Use product cache...
}

Zie Afhankelijkheidsinjectie: Sleutelservices voor meer informatie over sleutelservices.NET.

Configuratie

De AspireRedis integratie van gedistribueerde caching 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 builder.AddRedisDistributedCache:

builder.AddRedisDistributedCache("cache");

Vervolgens wordt de verbindingsreeks opgehaald uit de sectie ConnectionStrings configuratie:

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

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

Configuratieproviders gebruiken

De Aspire Stack Exchange Redis gedistribueerde caching-integratie ondersteunt Microsoft.Extensions.Configuration. Het laadt de StackExchangeRedisSettings vanuit de configuratie met behulp van de Aspire:StackExchange:Redis key. 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 schema van clientintegratie voor gedistribueerde caching Redis.

Gebruik inline-delegates

U kunt de Action<StackExchangeRedisSettings> delegate ook doorgeven om een deel van of alle opties direct in te stellen, bijvoorbeeld om DisableTracingte configureren.

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

U kunt de ConfigurationOptions ook instellen met behulp van de Action<ConfigurationOptions> configureOptions gemachtigde parameter van de AddRedisDistributedCache methode. U kunt bijvoorbeeld de time-out voor de verbinding instellen:

builder.AddRedisDistributedCache(
    "cache",
     null,
     static options => options.ConnectTimeout = 3_000);

Gezondheidscontroles van integratie Client

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

De AspireRedis integratie van gedistribueerde caching verwerkt het volgende:

  • Hiermee wordt een gezondheidscontrole toegevoegd wanneer StackExchangeRedisSettings.DisableHealthChecksfalseis, waarmee geprobeerd wordt verbinding te maken met de containerinstantie.
  • Integreert met het /health HTTP-eindpunt, dat specificeert dat alle geregistreerde gezondheidscontroles moeten slagen voordat de app als gereed wordt beschouwd om verkeer te 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 AspireRedis integratie van gedistribueerde caching maakt gebruik van de volgende logboekcategorieën:

  • Aspire.StackExchange.Redis
  • Microsoft.Extensions.Caching.StackExchangeRedis

Traceren

De Aspire-gedistribueerde caching-integratie zendt de volgende tracerenactiviteiten uit met gebruik van Redis.

  • OpenTelemetry.Instrumentation.StackExchangeRedis

Statistieken

De AspireRedis-integratie van gedistribueerde caching ondersteunt momenteel standaard geen metrieke gegevens, vanwege beperkingen van 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?