® integratie van .NET AspireRedis*
Omvat: Hosting-integratie en
Client-integratie
Redis is het snelste gegevensplatform ter wereld voor caching, vectorzoekopdrachten en NoSQL-databases. Met de .NET AspireRedis-integratie kunt u verbinding maken met bestaande Redis-instanties of nieuwe instanties maken vanuit .NET met de docker.io/library/redis
containerafbeelding.
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 creëren vanuit .NET met de ghcr.io/microsoft/garnet
containerafbeelding.
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 vanuit .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 deze als resources uit te drukken in uw app-host project, voegt u het 📦Aspire.Hosting.Redis NuGet-pakket toe.
dotnet add package Aspire.Hosting.Redis
Zie dotnet pakket toevoegen of Pakketafhankelijkheden beheren in .NET toepassingenvoor 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 levenscyclus van containerresourcesvoor meer informatie.
Tip
Als u liever verbinding wilt maken met een bestaand Redis exemplaar, roept u in plaats daarvan AddConnectionString aan. Raadpleeg bestaande bronnenvoor meer informatie.
De Redis-resource toevoegen met de Redis Insights
Als u de Redis Insights- wilt toevoegen aan de Redis-resource, roept u de methode WithRedisInsight
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- 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.
.NET
.NET Aspire voegt een andere container image docker.io/rediscommander/redis-commander
toe aan de app-host waarop de commander-app draait.
Tip
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. Zie voor meer informatie over gegevensvolumes en details over waarom ze de voorkeur hebben boven bind mounts, de documentatie voor Docker: Volumes.
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
Gegevens bind mounts hebben beperkte functionaliteit in vergelijking met volumes, die betere prestaties, draagbaarheid 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 koppeling voor gegevensbinding wordt gekoppeld aan de C:\Redis\Data
in Windows (of /Redis/Data
op Unix) op de hostcomputer in de Redis container. Voor meer informatie over data-bind-mounts, zie Docker docs: Bind mounts.
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 Redis docs: Persistentievoor meer informatie over persistentie.
De Garnet-hostingintegratie modelleert een Garnet-resource als het type GarnetResource. Voor toegang tot dit type en API's waarmee u het kunt toevoegen aan uw 📦Aspire. Hosting.Garnet NuGet-pakket in het app-host project.
dotnet add package Aspire.Hosting.Garnet
Zie dotnet pakket toevoegen of Pakketafhankelijkheden beheren in .NET toepassingenvoor 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 levenscyclus van containerresourcesvoor meer informatie.
Tip
Als u liever verbinding wilt maken met een bestaand Garnet-exemplaar, roept u in plaats daarvan AddConnectionString aan. Raadpleeg bestaande bronnenvoor 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 voor meer informatie over gegevensvolumes en details over waarom ze de voorkeur hebben boven bind mounts, de documentatie: Volumes.
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
Gegevens bind mounts hebben beperkte functionaliteit in vergelijking met volumes, die betere prestaties, draagbaarheid 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 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 data-bind-mounts, zie Docker docs: Bind mounts.
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 Redis docs: Persistentievoor meer informatie over persistentie.
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 in het app-host project.
dotnet add package Aspire.Hosting.Valkey
Zie dotnet pakket toevoegen of Pakketafhankelijkheden beheren in .NET toepassingenvoor 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 levenscyclus van containerresourcesvoor meer informatie.
Tip
Als u liever verbinding maakt met een bestaand Valkey-exemplaar, roept u in plaats daarvan AddConnectionString aan. Raadpleeg bestaande bronnenvoor 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 voor meer informatie over gegevensvolumes en details over waarom ze de voorkeur hebben boven Docker. Raadpleeg Docker docs: Volumes voor meer informatie.
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
Gegevens bind mounts hebben beperkte functionaliteit in vergelijking met volumes, die betere prestaties, draagbaarheid 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 Docker docs: Bindingskoppelingenvoor meer informatie over koppelingskoppelingen voor gegevens.
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 Redis docs: Persistentievoor meer informatie over persistentie.
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 de 📦 AspNetCore.HealthChecks.Redis NuGet-pakket.
Client integratie
Installeer het 📦Aspire.StackExchange.Redis 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 .NET Aspire Stack Exchange Redis-clientintegratie. De Redis-clientintegratie registreert een IConnectionMultiplexer exemplaar dat u kunt gebruiken om met Rediste communiceren.
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");
Tip
De parameter connectionName
moet overeenkomen met de naam die wordt gebruikt bij het toevoegen van de Redis resource in het app-hostproject. Zie Redis bron toevoegenvoor meer informatie.
Tip
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 toevoegenvoor meer informatie.
Tip
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 toevoegenvoor 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...
}
Voor meer informatie over afhankelijkheidsinjectie, zie .NET afhankelijkheidsinjectie.
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...
}
Voor meer informatie over op sleutels gebaseerde services, zie .NET afhankelijkheidsinjectie: Keyed services.
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 Redis-configuratiedocumentenvoor 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
-sleutel. Voorbeeld appsettings.json waarmee een aantal van de opties wordt geconfigureerd:
{
"Aspire": {
"StackExchange": {
"Redis": {
"ConfigurationOptions": {
"ConnectTimeout": 3000,
"ConnectRetry": 2
},
"DisableHealthChecks": true,
"DisableTracing": false
}
}
}
}
Gebruik inline-delegates
U kunt de Action<StackExchangeRedisSettings>
gedelegeerde ook doorgeven om bepaalde of alle opties inline in te stellen, bijvoorbeeld om DisableTracing
te configureren:
builder.AddRedisClient(
"cache",
static settings => settings.DisableTracing = true);
Gezondheidscontroles voor Client-integratie
.NET .NET Aspire clientintegraties hebben standaard gezondheidscontroles ingeschakeld voor alle diensten. Evenzo, schakelen veel .NET.NET Aspirehostingintegraties ook eindpunten voor gezondheidscontrole in. Zie voor meer informatie:
De integratie van .NET Aspire Stack Exchange Redis verwerkt het volgende:
- Hiermee wordt een gezondheidscontrole toegevoegd wanneer StackExchangeRedisSettings.DisableHealthChecks
false
is, 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 in voor logboekregistratie, tracering en metrieken, die bekend staan als de pijlers van waarneembaarheid. Zie .NET.NET Aspire overzicht van integratieintegratiesvoor meer informatie over de waarneembaarheid en telemetrie van integraties. 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 de bovenste?