Dela via


.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.OutputCachingclient 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.OutputCachingclient 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.OutputCachingclient 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 AddRedisbuilder-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 AddGarnetbuilder-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 AddValkeybuilder-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 AddAzureRedisMicrosoft 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?