Delen via


.NET Aspire Redis®* integratie

Inclusief:Hostingintegratie opgenomen hostingintegratie —&— Client integratie opgenomenClient integratie

Redis is het snelste gegevensplatform ter wereld voor caching, vectorzoekopdrachten en NoSQL-databases. Met de -integratie kunt u verbinding maken met bestaande exemplaren of nieuwe exemplaren maken met de containerafbeelding via .

Garnet is een hoogwaardige cacheopslag van Microsoft Research en voldoet aan het Redis serialisatieprotocol (RESP). Met de .NET AspireRedis integratie kunt u verbinding maken met bestaande Garnet-exemplaren of nieuwe exemplaren maken vanaf .NET met de ghcr.io/microsoft/garnet container-image.

Valkey is een Redis fork en voldoet aan het Redis serialisatieprotocol (RESP). Het is een gegevensarchief met hoge prestaties voor sleutel/waarde dat ondersteuning biedt voor verschillende werkbelastingen, zoals caching, berichtenwachtrijen en kan fungeren als een primaire database. Met de .NET AspireRedis integratie kunt u verbinding maken met bestaande Valkey-exemplaren of nieuwe exemplaren maken vanaf .NET met de docker.io/valkey/valkey containerafbeelding.

Hostingintegratie

De Redis hostintegratie modelleert een Redis-resource als het RedisResource-type. Als u toegang wilt krijgen tot dit type en API's om ze uit te drukken als resources in uw app-hostproject, voegt u het 📦Aspire.Hosting.Redis NuGet-pakket toe:

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 app-hostproject AddRedis aan op het builder exemplaar 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 .NET.NET Aspire een containerinstallatiekopie toevoegt aan de app-host, zoals wordt weergegeven in het vorige voorbeeld met de docker.io/Redis/Redis-installatiekopie, wordt er een nieuw Redis exemplaar op uw lokale computer 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.

De Redis-resource toevoegen met de 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. .NET .NET Aspire voegt een andere container image docker.io/redis/redisinsight toe aan de app-host waarop de commander-app draait.

Notitie

Om de hostpoort voor de RedisInsightResource-keten te configureren, doet u een aanroep naar de WithHostPort-API en geeft u het gewenste poortnummer op.

Redis resource toevoegen met Redis Commander

Als u de Redis Commander aan de Redis resource wilt toevoegen, 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. .NET .NET Aspire voegt een andere container image docker.io/rediscommander/redis-commander toe aan de app-host waarop de commander-app draait.

Aanbeveling

Om de hostpoort voor de RedisCommanderResource-keten te configureren, doet u een aanroep naar de WithHostPort-API en geeft u 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. Raadpleeg de documentatie: Volumes voor meer informatie over datavolumes en uitleg over waarom ze de voorkeur krijgen boven bindingskoppelingenDocker.

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

Koppelpaden hebben beperkte functionaliteit in vergelijking met volumes, die betere prestaties, overdraagbaarheid en beveiliging bieden, waardoor ze geschikter zijn voor productieomgevingen. Bind-mounts bieden echter directe toegang tot en het wijzigen van bestanden op het hostsysteem, ideaal voor ontwikkeling en testen waar wijzigingen in realtime nodig zijn.

Gegevensbindmounts zijn afhankelijk van het bestandssysteem van de hostmachine om de Redis gegevens te behouden wanneer de container wordt herstart. De mount voor databinding wordt gemonteerd op de C:\Redis\Data in Windows (of /Redis/Data op Unix) op het pad van de hostcomputer in de Redis container. Zie de documentatie: BindingskoppelingenDocker voor meer informatie over gegevensbindingskoppelingen.

Redis-resource toevoegen met bestendigheid

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 type GarnetResource. Om toegang te krijgen tot dit type en API's, waarmee u het kunt toevoegen aan uw 📦Aspire.Hosting.Garnet NuGet-pakket in het app-hostproject.

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 app-hostproject AddGarnet aan op het builder exemplaar 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 .NET.NET Aspire een containerinstallatiekopie toevoegt aan de app-host, zoals wordt weergegeven in het vorige voorbeeld met de ghcr.io/microsoft/garnet-installatiekopie, 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. Raadpleeg de documentatie: Volumes voor meer informatie over datavolumes en uitleg over waarom ze de voorkeur krijgen boven bindingskoppelingenDocker.

Garnet-resource toevoegen met data bind mount

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

Koppelpaden hebben beperkte functionaliteit in vergelijking met volumes, die betere prestaties, overdraagbaarheid en beveiliging bieden, waardoor ze geschikter zijn voor productieomgevingen. Bind-mounts bieden echter directe toegang tot en het wijzigen van bestanden op het hostsysteem, ideaal voor ontwikkeling en testen waar wijzigingen in realtime nodig zijn.

Gegevenskoppelingen vertrouwen op het bestandssysteem van de hostmachine om Garnet-gegevens te behouden bij het opnieuw opstarten van containers. De gegevensbindmount is gemonteerd op het C:\Garnet\Data op Windows (of /Garnet/Data op Unix) pad op de hostmachine in de Garnet-container. Zie de documentatie: BindingskoppelingenDocker voor meer informatie over gegevensbindingskoppelingen.

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 Valkey-hosting integratie modelleert een Valkey resource als een ValkeyResource-type. Voor toegang tot dit type en de API's waarmee u het kunt toevoegen aan uw 📦Aspire.Hosting.Valkey NuGet-pakket binnen het apphostproject.

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 app-hostproject AddValkey aan op het builder-exemplaar 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 .NET.NET Aspire een containerinstallatiekopie toevoegt aan de app-host, zoals wordt weergegeven in het vorige voorbeeld met de docker.io/valkey/valkey-installatiekopie, wordt er een nieuw Valkey-exemplaar gemaakt 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. Raadpleeg de documentatie: Volumes voor meer informatie over datavolumes en uitleg over waarom ze de voorkeur krijgen boven bindingskoppelingenDocker.

Valkey-resource toevoegen met koppeling voor gegevensbinding

Als u een gegevensbindingskoppeling wilt toevoegen aan de Valkey-resource, gebruikt u de WithDataBindMount-methode:

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

Koppelpaden hebben beperkte functionaliteit in vergelijking met volumes, die betere prestaties, overdraagbaarheid en beveiliging bieden, waardoor ze geschikter zijn voor productieomgevingen. Bind-mounts bieden echter directe toegang tot en het wijzigen van bestanden op het hostsysteem, ideaal voor ontwikkeling en testen waar wijzigingen in realtime nodig zijn.

Gegevenskoppelingen zijn afhankelijk van het bestandssysteem van de hostmachine om Valkey-gegevens te behouden bij het opnieuw starten van containers. De data-bindmount wordt in de Valkey-container op de hostmachine gekoppeld aan het pad C:\Valkey\Data op Windows (of /Valkey/Data op Unix). Zie de documentatie: BindingskoppelingenDocker voor meer informatie over gegevensbindingskoppelingen.

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.

Gezondheidscontroles van hostingintegratie

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

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

Client integratie

Installeer het .NET Aspire NuGet-pakket in het client-gebruikende project, dat wil zeggen het project voor de toepassing die gebruikmaakt van de Redis-client, om aan de slag te gaan met de 📦 Stack Exchange Aspire-clientintegratie. 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 parameter connectionName moet overeenkomen met de naam die wordt gebruikt bij het toevoegen van de Redis resource in het app-hostproject. Zie Resource toevoegen Redisvoor meer informatie.

Aanbeveling

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

Aanbeveling

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

Vervolgens kunt u het IConnection 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.

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 instanties ophalen via afhankelijkheidsinjectie. Als u bijvoorbeeld de verbinding wilt ophalen uit een voorbeeldservice:

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

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

Configuratie

De .NET 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");

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

builder.AddGarnet("cache");

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

builder.AddValkey("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 .NET Aspire Stack Exchange Redis 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 Redis schema voor clientintegratie JSONAspire. StackExchange.Redis/ConfigurationSchema.json.

Gebruik inline-delegates

U kunt de Action<StackExchangeRedisSettings> delegate-functie ook doorgeven om enkele of alle opties direct in te stellen, bijvoorbeeld om DisableTracing te configureren:

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

Gezondheidscontroles voor Client-integratie

.NET hebben standaard .NET Aspirestatuscontroles ingeschakeld voor alle services. Op dezelfde manier maken veel .NET.NET Aspirehostingintegraties ook statuscontrole-eindpunten mogelijk. Zie voor meer informatie:

De integratie van .NET Aspire Stack Exchange Redis verwerkt het volgende:

  • Hiermee wordt een gezondheidscontrole toegevoegd wanneer StackExchangeRedisSettings.DisableHealthChecksfalseis, waarmee geprobeerd wordt verbinding te maken met de containerinstantie.
  • Kan worden geïntegreerd met het /health HTTP-eindpunt, waarbij alle geregistreerde gezondheidscontroles moeten slagen voordat de app als gereed wordt beschouwd voor het accepteren van verkeer.

Waarneembaarheid en telemetrie

.NET .NET 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 telemetrie.NET.NET Aspire. 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 .NET Aspire Stack Exchange Redis maakt gebruik van de volgende logboekcategorieën:

  • Aspire.StackExchange.Redis

Opsporing

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

  • OpenTelemetry.Instrumentation.StackExchangeRedis

Statistieken

De .NET Aspire Stack Exchange Redis integratie ondersteunt momenteel standaard geen metrics 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?