® .NET AspireRedis* integratie van uitvoercache
Omvat: Hostingintegratie en
Client-integratie
Leer hoe je de .NET AspireRedis-uitvoercache-integratie kunt gebruiken. De integratie van de Aspire.StackExchange.Redis.OutputCaching
-client wordt gebruikt om een Output Caching-provider van ASP.NET Core te registreren, ondersteund door een Redis-server met het docker.io/library/redis
container-image.
Leer hoe je de .NET AspireRedis-uitvoercache-integratie kunt gebruiken. De Aspire.StackExchange.Redis.OutputCaching
-clientintegratie wordt gebruikt om een ASP.NET Core Output Caching-provider te registreren die wordt ondersteund door een Garnet-server met de ghcr.io/microsoft/garnet
container image.
Leer hoe je de .NET AspireRedis-uitvoercache-integratie kunt gebruiken. De Aspire.StackExchange.Redis.OutputCaching
-clientintegratie wordt gebruikt om een ASP.NET Core Output Caching-provider te registreren die wordt ondersteund door een Valkey-server met de docker.io/valkey/valkey
containerafbeelding.
Hostingintegratie
De Redis hostingintegratie modeleert 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.
Resource Redis toevoegen met 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 containerafbeelding docker.io/redis/redisinsight
toe aan de app-host die de commander-app uitvoert.
Notitie
Configureer de hostpoort voor de RedisInsightResource
-keten door een aanroep te maken naar de WithHostPort
-API en het gewenste poortnummer op te geven.
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 containerafbeelding docker.io/rediscommander/redis-commander
toe aan de app-host die de commander-app uitvoert.
Tip
Configureer de hostpoort voor de RedisCommanderResource-keten door een aanroep te maken naar de WithHostPort-API en het gewenste poortnummer op te geven.
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 waarom ze de voorkeur krijgen boven bind mounts, de Docker documentatie: Volumes.
Redis-resource toevoegen met koppeling voor databinding
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 bind mounts hebben de beperkte functionaliteit in vergelijking met volumes, die betere prestaties, draagbaarheid en beveiliging bieden en daardoor geschikter zijn voor productieomgevingen. Koppelpunten bieden echter directe toegang tot en aanpassing van bestanden op het hostsysteem, wat ideaal is voor ontwikkeling en testen waarbij wijzigingen in realtime nodig zijn.
Gegevensbindingen koppelen zijn afhankelijk van de bestandssystemen van de hostmachines om de Redis gegevens bij het opnieuw opstarten van containers te behouden. 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 gegevenskoppelpunten, zie Docker docs: Bind mounts.
Redis resource toevoegen met persistentie
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 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 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 waarom ze de voorkeur krijgen boven bind mounts, de Docker 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
Data bind mounts hebben de beperkte functionaliteit in vergelijking met volumes, die betere prestaties, draagbaarheid en beveiliging bieden en daardoor geschikter zijn voor productieomgevingen. Koppelpunten bieden echter directe toegang tot en aanpassing van bestanden op het hostsysteem, wat ideaal is voor ontwikkeling en testen waarbij wijzigingen in realtime nodig zijn.
Gegevensbindmounts vertrouwen op het bestandssysteem van de hostmachine om de Garnet-gegevens bij herstarten van de container te bewaren. 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. Zie Docker docs: Bind mounts voor meer informatie over gegevensbindingsmontages.
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-hostingintegratie modelleert een Valkey-resource als het ValkeyResource-type. Om toegang te krijgen tot dit type en API's, waardoor u deze 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 waarom ze de voorkeur krijgen boven bind mounts, de Docker documentatie: Volumes.
Valkey-resource toevoegen met koppeling voor gegevensbinding
Als u een data-bindmount wilt toevoegen aan de Valkey-resource, gebruik dan 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
Data bind mounts hebben de beperkte functionaliteit in vergelijking met volumes, die betere prestaties, draagbaarheid en beveiliging bieden en daardoor geschikter zijn voor productieomgevingen. Koppelpunten bieden echter directe toegang tot en aanpassing van bestanden op het hostsysteem, wat ideaal is voor ontwikkeling en testen waarbij wijzigingen in realtime nodig zijn.
Data-bind mounts zijn afhankelijk van het bestandssysteem van de hostmachine om Valkey-gegevens te laten voortbestaan bij opnieuw opstarten van containers. De data-bind mount wordt bevestigd op het C:\Valkey\Data
in Windows (of /Valkey/Data
op Unix) pad op de hostmachine in de Valkey-container. 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 voor hostingintegratie
De Redis hostingintegratie voegt automatisch een statuscontrole toe voor het juiste resourcetype. De gezondheidstest controleert of de server draait en of er een verbinding mee kan worden opgezet.
De hostingintegratie is afhankelijk van de 📦 AspNetCore.HealthChecks.Redis NuGet-pakket.
integratie Client
nl-NL: Om aan de slag te gaan met de .NET Aspire Stack Exchange Redis-uitvoercachingclientintegratie, installeer het 📦Aspire.StackExchange.Redis.OutputCaching NuGet-pakket in het project dat de uitvoercachingclient gebruikt, dat wil zeggen het project voor de applicatie die de uitvoercachingclient gebruikt. De Redis uitvoercachingclient-integratie registreert services die vereist zijn voor het inschakelen van CacheOutput methodeoproepen en [OutputCache] kenmerkgebruik dat op Redis als zijn cachemechanisme vertrouwt.
dotnet add package Aspire.StackExchange.Redis.OutputCaching
Uitvoercache toevoegen
Roep in het Program.cs-bestand van het clientgebruikende project de extensiemethode AddRedisOutputCache aan op iedere IHostApplicationBuilder om de vereiste services voor uitvoercaching te registreren.
builder.AddRedisOutputCache(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 resource 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.
Voeg de middleware toe aan de aanvraagverwerkingspijplijn door UseOutputCache(IApplicationBuilder)aan te roepen:
var app = builder.Build();
app.UseOutputCache();
Voor minimale API-appsconfigureert u een eindpunt om caching uit te voeren door CacheOutputaan te roepen of door de OutputCacheAttributetoe te passen, zoals wordt weergegeven in de volgende voorbeelden:
app.MapGet("/cached", () => "Hello world!")
.CacheOutput();
app.MapGet(
"/attribute",
[OutputCache] () => "Hello world!");
Voor apps met controllers past u het kenmerk [OutputCache]
toe op de actiemethode. Voor Razor Pages-apps past u het kenmerk toe op de Razor-paginaklasse.
Configuratie
De integratie van .NET Aspire Stack Exchange Redis uitvoercaching 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 AddRedisOutputCache:
builder.AddRedisOutputCache(connectionName: "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 voor uitvoercaching van Stack Exchange .NET AspireRedis 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
}
}
}
}
Voor het volledige integratieschema voor cacheclient-uitvoer Redis, zie Redis.
Gebruik inline-delegates
U kunt de Action<StackExchangeRedisSettings> configurationSettings
gedelegeerde ook doorgeven om bepaalde of alle opties inline in te stellen, bijvoorbeeld om gezondheidscontroles in de code uit te schakelen.
builder.AddRedisOutputCache(
"cache",
static settings => settings.DisableHealthChecks = true);
U kunt ook de ConfigurationOptions instellen door de delegeerparameter Action<ConfigurationOptions> configureOptions
van de AddRedisOutputCache-methode te gebruiken. U kunt bijvoorbeeld de time-out voor de verbinding instellen:
builder.AddRedisOutputCache(
"cache",
static settings => settings.ConnectTimeout = 3_000);
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 .NET Aspire Stack Exchange Redis uitvoercache-integratie omgaat met het volgende:
- Hiermee wordt een gezondheidscontrole toegevoegd wanneer StackExchangeRedisSettings.DisableHealthChecks
false
is, waarmee geprobeerd wordt verbinding te maken met de containerinstantie. - Integreert met het
/health
HTTP-eindpunt, waarmee alle geregistreerde gezondheidstoetsen moeten slagen opdat de app als gereed beschouwd wordt om verkeer te accepteren.
Waarneembaarheid en telemetrie
.NET .NET Aspire integraties automatiseren de inrichtingen voor logboekregistratie, tracering en metingen, die ook wel bekendstaan 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 uitvoercache maakt gebruik van de volgende logboekcategorieën:
Aspire.StackExchange.Redis
Microsoft.AspNetCore.OutputCaching.StackExchangeRedis
Tracering
De integratie van .NET Aspire Stack Exchange Redis uitvoercaching zal de volgende traceeractiviteiten genereren door gebruik te maken van OpenTelemetry:
OpenTelemetry.Instrumentation.StackExchangeRedis
Statistieken
De integratie van .NET Aspire Stack Exchange Redis-uitvoer-caching ondersteunt momenteel standaard geen metrische gegevens 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?