.NET Aspire Redis®* integrering av cachelagring för utdata
omfattar:Som värd för integrering och Client integration
Lär dig hur du använder cachelagringsintegrering av .NET AspireRedis utdata. Integreringen Aspire.StackExchange.Redis.OutputCaching
client används för att registrera en ASP.NET Core cachelagring av utdata som backas upp av en Redisserver med docker.io/library/redis
containeravbildningen.
Lär dig hur du använder cachelagringsintegrering av .NET AspireRedis utdata. Integreringen Aspire.StackExchange.Redis.OutputCaching
client används för att registrera en ASP.NET Core utdata-cachelagring som stöds av en Garnet-baseradserver med ghcr.io/microsoft/garnet
containerbilden.
Lär dig hur du använder cachelagringsintegrering av .NET AspireRedis utdata. Integreringen Aspire.StackExchange.Redis.OutputCaching
client används för att registrera en ASP.NET Core Output Cache som stöds av en Valkey server med containeravbildningen docker.io/valkey/valkey
.
Värdintegrering
Redis-modellen för hostingintegrering modellerar en Redis-resurs som typ RedisResource. För att komma åt den här typen och API:er, som gör att du kan lägga till den i din 📦Aspire.Hosting.Redis NuGet-paket i appvärd-projekt.
dotnet add package Aspire.Hosting.Redis
Mer information finns i dotnet add package eller Hantera paketberoenden i .NET applikationer.
Lägga till Redis resurs
I projektet för värdapplikationen anropar du AddRedis på builder
-instansen för att lägga till en resurs av typen Redis.
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache");
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
När .NET.NET Aspire lägger till en containerbild i appvärden, som du ser i föregående exempel med docker.io/Redis/Redis
bild, skapar den en ny Redis instans på din lokala maskin. En referens till din Redis resurs (variabeln cache
) läggs till i ExampleProject
.
Metoden WithReference konfigurerar en anslutning i ExampleProject
med namnet "cache"
. Mer information finns i Livscykel för containerresurser.
Tips
Om du hellre vill ansluta till en befintlig Redis instans anropar du AddConnectionString i stället. Mer information finns i Referera till befintliga resurser.
Lägga till Redis resurs med Redis Insights
Om du vill lägga till Redis Insights- till resursen Redis anropar du metoden WithRedisInsight
:
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 är ett kostnadsfritt grafiskt gränssnitt för att analysera Redis data i alla operativsystem och Redis distributioner med hjälp av vår AI-assistent, Redis Copilot.
.NET
.NET Aspire lägger till ytterligare en containeravbildning docker.io/redis/redisinsight
till appvärd som kör kommandoprogrammet.
Note
För att konfigurera värdporten för RedisInsightResource
kedja ett anrop till WithHostPort
-API:et och ange önskat portnummer.
Lägg till Redis resurs med Redis Commander
Om du vill lägga till Redis Commander- i resursen Redis anropar du metoden WithRedisCommander:
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 är ett Node.js webbprogram som används för att visa, redigera och hantera en Redis-databas.
.NET
.NET Aspire lägger till ytterligare en containerbild docker.io/rediscommander/redis-commander
till appvärden som kör kommandörappen.
Tips
För att konfigurera värdporten för RedisCommanderResource kedja ett anrop till WithHostPort-API:et och ange önskat portnummer.
Lägga till Redis resurs med datavolym
Om du vill lägga till en datavolym i resursen Redis anropar du metoden WithDataVolume på den Redis resursen:
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...
Datavolymen används för att bevara Redis data utanför containerns livscykel. En datavolym monteras på /data
-sökvägen i Redis-containern, och när ingen name
-parameter anges, genereras ett namn slumpmässigt. Mer information om datavolymer och detaljer om varför de föredras framför bind mountsfinns i Docker dokumentationen: Volymer.
Lägg till Redis-resurs med data-bindmontering
Om du vill lägga till en data-bindmontering till Redis-resursen anropar du metoden WithDataBindMount:
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...
Viktig
Data bindningsmonteringar har begränsade funktioner jämfört med volymer, vilket ger bättre prestanda, portabilitet och säkerhet, vilket gör dem mer lämpliga för produktionsmiljöer. Bindningsmonteringar tillåter dock direkt åtkomst och ändring av filer i värdsystemet, perfekt för utveckling och testning där realtidsändringar behövs.
Databindningsmonteringar förlitar sig på värddatorns filsystem för att bevara Redis data mellan omstarter av containrar. Databindningsmonteringen är monterad på sökvägen C:\Redis\Data
i Windows (eller /Redis/Data
på Unix) på värddatorn i Redis-containern. Mer information om data-bindmonteringar finns i Docker dokumentation: bindmonteringar.
Lägga till Redis resurs med beständighet
Om du vill lägga till beständighet för Redis-resursen anropar du WithPersistence-metoden med antingen datavolymen eller databindmonteringen.
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...
Föregående kod lägger till beständighet för den Redis resursen genom att ta ögonblicksbilder av Redis data med ett angivet intervall och tröskelvärde.
interval
är tiden mellan ögonblicksbildexporter och keysChangedThreshold
är antalet viktiga ändringsåtgärder som krävs för att utlösa en ögonblicksbild. Mer information om beständighet finns i Redis dokument: Beständighet.
Integrationen av Garnet modellerar en Garnet-resurs som typen GarnetResource. För att komma åt den här typen och API:er som gör att du kan lägga till den i ditt 📦Aspire.Hosting.Garnet NuGet-paket i appvärdsprojekt.
dotnet add package Aspire.Hosting.Garnet
Mer information finns i dotnet add package eller Hantera paketberoenden i .NET applikationer.
Lägg till Garnet-resurs
I appvärdprojektet anropar du AddGarnet på builder
-instansen för att lägga till en Garnet-resurs:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddGarnet("cache");
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
När .NET.NET Aspire lägger till en containerbild till appvärden, som visas i föregående exempel med ghcr.io/microsoft/garnet
-bilden, skapar det en ny Garnet-instans på din lokala dator. En referens till din Garnet-resurs (variabeln cache
) läggs till i ExampleProject
.
Metoden WithReference konfigurerar en anslutning i ExampleProject
med namnet "cache"
. Mer information finns i Livscykel för containerresurser.
Tips
Om du hellre vill ansluta till en befintlig Garnet-instans anropar du AddConnectionString i stället. Mer information finns i Referera till befintliga resurser.
Lägg till Garnet-resurs med datavolym
Om du vill lägga till en datavolym i Garnet-resursen anropar du metoden AddGarnet på Garnet-resursen:
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...
Datavolymen används för att bevara Garnet-data utanför containerns livscykel. Datavolymen monteras på sökvägen /data
i Garnet-containern, och när en name
parameter inte anges genereras namnet slumpmässigt. Mer information om datavolymer och varför de föredras framför bindningsfästenfinns i Docker dokumentation: Volymer.
Lägg till Garnet-resurs med databindningsmontering
Om du vill lägga till en databindningsmontering till Garnet-resursen anropar du metoden WithDataBindMount:
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...
Viktig
Data bindningsmonteringar har begränsade funktioner jämfört med volymer, vilket ger bättre prestanda, portabilitet och säkerhet, vilket gör dem mer lämpliga för produktionsmiljöer. Bindningsmonteringar tillåter dock direkt åtkomst och ändring av filer i värdsystemet, perfekt för utveckling och testning där realtidsändringar behövs.
Databindningsmonteringar förlitar sig på värddatorns filsystem för att bevara Garnet-data mellan omstarter av containrar. Databindmonteringen monteras på sökvägen C:\Garnet\Data
på Windows (eller /Garnet/Data
på Unix) på värddatorn i Garnet-containern. Mer information om datamonteringar med bindning hänvisas till i Docker dokumentation: bindmonteringar.
Lägg till Garnet-resurs med beständighet
Om du vill lägga till beständighet i Garnet-resursen anropar du metoden WithPersistence med antingen datavolymen eller databindningsmonteringen:
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...
Föregående kod lägger till beständighet för den Redis resursen genom att ta ögonblicksbilder av Garnet-data med ett angivet intervall och tröskelvärde.
interval
är tiden mellan ögonblicksbildexporter och keysChangedThreshold
är antalet viktiga ändringsåtgärder som krävs för att utlösa en ögonblicksbild. Mer information om beständighet finns i Redis dokument: Beständighet.
Valkey-värdintegration modellerar en Valkey-resurs som ValkeyResource-typen. För att komma åt den här typen och API:er som gör att du kan lägga till den i din 📦Aspire.Hosting.Valkey NuGet-paketet i projektet för appvärd .
dotnet add package Aspire.Hosting.Valkey
Mer information finns i dotnet add package eller Hantera paketberoenden i .NET applikationer.
Lägg till Valkey-resurs
I appvärdprojektet anropar du AddValkey på builder
-instansen för att lägga till en Valkey-resurs:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddValkey("cache");
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
När .NET.NET Aspire lägger till en containeravbildning till appvärden, som visas i föregående exempel med docker.io/valkey/valkey
avbildningen, skapar den en ny Valkey-instans på den lokala datorn. En referens till valkey-resursen (variabeln cache
) läggs till i ExampleProject
.
Metoden WithReference konfigurerar en anslutning i ExampleProject
med namnet "cache"
. Mer information finns i Livscykel för containerresurser.
Tips
Om du hellre vill ansluta till en befintlig Valkey-instans anropar du AddConnectionString i stället. Mer information finns i Referera till befintliga resurser.
Lägga till Valkey-resurs med datavolym
Om du vill lägga till en datavolym i Valkey-resursen anropar du metoden AddValkey på Valkey-resursen:
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...
Datavolymen används för att bevara Valkey-data utanför containerns livscykel. Datavolymen monteras på sökvägen /data
i Valkey-containern, och när en parameter name
inte anges, genereras namnet slumpmässigt. Mer information om datavolymer och varför de föredras framför bindmonteringarfinns i dokumentationen Docker: Volymer.
Lägga till Valkey-resurs med databindningsmontering
Om du vill lägga till en databindningspunkt till Valkey-resursen, anropar du metoden WithDataBindMount.
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...
Viktig
Data bindningsmonteringar har begränsade funktioner jämfört med volymer, vilket ger bättre prestanda, portabilitet och säkerhet, vilket gör dem mer lämpliga för produktionsmiljöer. Bindningsmonteringar tillåter dock direkt åtkomst och ändring av filer i värdsystemet, perfekt för utveckling och testning där realtidsändringar behövs.
Databindningsmonteringar förlitar sig på värddatorns filsystem för att bevara Valkey-data mellan omstarter av containrar. Databindningsmonteringen monteras på sökvägen C:\Valkey\Data
i Windows (eller /Valkey/Data
på Unix) på värddatorn i Valkey-containern. Mer information om databindningspunkter kan du se i dokumentationen Docker: Bindpunkter.
Lägg till en Valkey-resurs med beständighet
Om du vill lägga till beständighet i Valkey-resursen anropar du metoden WithPersistence med antingen datavolymen eller databindningsmonteringen:
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...
Föregående kod lägger till beständighet för den Redis resursen genom att ta ögonblicksbilder av Valkey-data med ett angivet intervall och tröskelvärde.
interval
är tiden mellan ögonblicksbildexporter och keysChangedThreshold
är antalet viktiga ändringsåtgärder som krävs för att utlösa en ögonblicksbild. Mer information om beständighet finns i Redis dokument: Beständighet.
Utför hälsointegrationskontroller
Redis värdintegrering lägger automatiskt till en hälsokontroll för lämplig resurstyp. Hälsokontrollen verifierar att server är igång och att en anslutning kan etableras till den.
Värdintegreringen förlitar sig på 📦 AspNetCore.HealthChecks.Redis NuGet-paketet.
Client integrering
Om du vill komma igång med .NET Aspire Stack Exchange Redis integrering med cachelagring av utdata client installerar du 📦Aspire.StackExchange.Redis.OutputCaching NuGet-paketet i det projekt som förbrukar client, dvs. det projekt som använder cachelagring av utdata client.
dotnet add package Aspire.StackExchange.Redis.OutputCaching
Lägg till cachelagring av utdata
I Program.cs-filen för ditt client-förbrukande projekt anropar du AddRedisOutputCache-tilläggsmetoden på alla IHostApplicationBuilder för att registrera de tjänster som krävs för cachelagring av utdata.
builder.AddRedisOutputCache(connectionName: "cache");
Tips
Parametern connectionName
måste matcha namnet som används när du lägger till Redis resursen i appvärdprojektet. För mer information, se Lägg till Redis resurs.
Tips
Parametern connectionName
måste matcha namnet som används när du lägger till Garnet-resursen i appvärdprojektet. Mer information finns i Lägg till Garnet-resurs.
Tips
Parametern connectionName
måste matcha namnet som används när du lägger till Valkey-resursen i appvärdprojektet. För mer information, se Lägg till Valkey-resurs.
Lägg till mellanprogrammet i pipelinen för bearbetning av begäranden genom att anropa UseOutputCache(IApplicationBuilder):
var app = builder.Build();
app.UseOutputCache();
För minimala API-apparkonfigurerar du en slutpunkt för cachelagring genom att anropa CacheOutputeller genom att använda OutputCacheAttribute, enligt följande exempel:
app.MapGet("/cached", () => "Hello world!")
.CacheOutput();
app.MapGet(
"/attribute",
[OutputCache] () => "Hello world!");
För appar med kontrollanter använder du attributet [OutputCache]
för åtgärdsmetoden. För Razor Pages-appar använder du attributet för Razor-sidklassen.
Konfiguration
Integreringen .NET Aspire Stack Exchange Redis cachelagring av utdata innehåller flera alternativ för att konfigurera Redis-anslutningen baserat på kraven och konventionerna i projektet.
Använda en anslutningssträng
När du använder en anslutningssträng från ConnectionStrings
konfigurationsavsnittet kan du ange namnet på anslutningssträngen när du anropar AddRedisOutputCache:
builder.AddRedisOutputCache(connectionName: "cache");
Sedan hämtas anslutningssträngen från ConnectionStrings
-konfigurationsavsnittet:
{
"ConnectionStrings": {
"cache": "localhost:6379"
}
}
Mer information om hur du formaterar den här anslutningssträngen finns i Stack Exchange Redis konfigurationsdokument.
Använda konfigurationsprovidrar
.NET Aspire Stack Exchange Redis-integrationen stöder Microsoft.Extensions.Configuration. Den läser in StackExchangeRedisSettings från konfigurationen med hjälp av nyckeln Aspire:StackExchange:Redis
. Exempel appsettings.json som konfigurerar några av alternativen:
{
"Aspire": {
"StackExchange": {
"Redis": {
"ConnectionString": "localhost:6379",
"DisableHealthChecks": true,
"DisableTracing": false
}
}
}
}
Det fullständiga Redisclient integrationsschemat JSON finns i Aspire. StackExchange.Redis/ConfigurationSchema.json.
Använd inline-delegater
Du kan också överföra Action<StackExchangeRedisSettings> configurationSettings
delegering för att konfigurera vissa eller alla alternativ direkt, till exempel för att inaktivera hälsokontrollering i koden.
builder.AddRedisOutputCache(
"cache",
static settings => settings.DisableHealthChecks = true);
Du kan också konfigurera ConfigurationOptions med hjälp av parametern Action<ConfigurationOptions> configureOptions
delegate för metoden AddRedisOutputCache. Om du till exempel vill ange tidsgränsen för anslutningen:
builder.AddRedisOutputCache(
"cache",
static settings => settings.ConnectTimeout = 3_000);
Hälsokontroller
Som standard aktiverar .NET.NET Aspire integreringar hälsokontroller för alla tjänster. Mer information finns i översikten över .NET.NET Aspire integreringar.
Integreringen .NET Aspire Stack Exchange Redis cachelagring av utdata hanterar följande:
- Lägger till
StackExchange.Redis
hälsokontroll, försöker öppna anslutningen och genererar när den misslyckas. - Integrerar med
/health
HTTP-slutpunkt, som anger att alla registrerade hälsokontroller måste godkännas för att appen ska anses vara redo att acceptera trafik.
Observerbarhet och telemetri
.NET .NET Aspire integreringar konfigurerar automatiskt konfigurationer för loggning, spårning och mått, som ibland kallas grundpelarna för observerbarhet. Mer information om integreringsobservabilitet och telemetri finns i översikten över .NET.NET Aspire integreringar. Beroende på säkerhetskopieringstjänsten kanske vissa integreringar bara stöder vissa av dessa funktioner. Vissa integreringar stöder till exempel loggning och spårning, men inte mått. Telemetrifunktioner kan också inaktiveras med hjälp av de tekniker som visas i avsnittet Configuration.
Skogsavverkning
Integreringen .NET Aspire Stack Exchange Redis cachelagring av utdata använder följande loggkategorier:
Aspire.StackExchange.Redis
Microsoft.AspNetCore.OutputCaching.StackExchangeRedis
Spårning
Integreringen .NET Aspire Stack Exchange Redis cachelagring av utdata genererar följande spårningsaktiviteter med hjälp av OpenTelemetry:
OpenTelemetry.Instrumentation.StackExchangeRedis
Mätvärden
.NET Aspire Stack Exchange Redis cachelagringsintegrering av utdata stöder för närvarande inte mått som standard på grund av begränsningar i StackExchange.Redis
-biblioteket.
Azure Redis värdintegrering
Om du vill distribuera dina Redis-resurser till Azure, installera 📦Aspire.Hosting.Azure.Redis NuGet-paket:
dotnet add package Aspire.Hosting.Azure.Redis
Lägg till Azure Cache for Redisserver resurs
När du har installerat .NET Aspire som värd för AzureRedis-paketet anropar du AddAzureRedis
-tilläggsmetoden i appvärdprojektet:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddAzureRedis("azcache")
var exampleProject = builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
Föregående anrop till AddAzureRedis
konfigurerar resursen Redisserver för att distribueras som en Azure Cache for Redis.
Viktig
Som standard konfigurerar AddAzureRedis
Microsoft Entra-ID autentisering. Detta kräver ändringar i program som behöver ansluta till dessa resurser, till exempel client integreringar.
Lägg till Azure Cache for Redis utdata client
När du anropar AddAzureRedis
i din Redis värdintegrering konfigureras som standard 📦 Microsoft.Azure. StackExchangeRedis NuGet-paket för att aktivera autentisering:
dotnet add package Microsoft.Azure.StackExchangeRedis
Redis-anslutningen kan användas med hjälp av client-integrationen och Microsoft.Azure.StackExchangeRedis
. Överväg följande konfigurationskod:
var azureOptionsProvider = new AzureOptionsProvider();
var configurationOptions = ConfigurationOptions.Parse(
builder.Configuration.GetConnectionString("cache") ??
throw new InvalidOperationException("Could not find a 'cache' connection string."));
if (configurationOptions.EndPoints.Any(azureOptionsProvider.IsMatch))
{
await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(
new DefaultAzureCredential());
}
builder.AddRedisOutputCache("cache", configureOptions: options =>
{
options.Defaults = configurationOptions.Defaults;
});
Mer information finns i Microsoft.Azure.StackExchangeRedis repository.
Se även
*: Redis är ett registrerat varumärke som tillhör Redis Ltd. Alla rättigheter däri är reserverade för Redis Ltd. All användning av Microsoft är endast i referenssyfte och anger inte någon sponsring, bekräftelse eller anknytning mellan Redis och Microsoft. Återgå till?
.NET Aspire