Dela via


Aspire Redis * integration med distribuerad cachelagring

Inkluderar:Värdintegrering ingår Värdintegrering &–& integrering ingår integration

Lär dig hur du använder AspireRedis distribuerad cachelagringsintegrering. Aspire.StackExchange.Redis.DistributedCaching-biblioteket används för att registrera en IDistributedCache--leverantör som stöds av en Redis-server med containerbilden docker.io/library/redis.

Lär dig hur du använder AspireRedis distribuerad cachelagringsintegrering. Aspire.StackExchange.Redis.DistributedCaching-biblioteket används för att registrera en IDistributedCache--leverantör som stöds av en Garnet-server med ghcr.io/microsoft/garnet containerbilden.

Lär dig hur du använder AspireRedis distribuerad cachelagringsintegrering. Aspire.StackExchange.Redis.DistributedCaching-biblioteket används för att registrera en IDistributedCache--provider som stöds av en Valkey-server med docker.io/valkey/valkey containerbilden.

Hostingtjänstintegrering

Redis-värdintegrationen modellerar en Redis-resurs som RedisResource-typ. Om du vill komma åt den här typen och API:er för att representera dem som resurser i ditt AppHost-projekt lägger du till 📦Aspire.Hosting.Redis NuGet-paket:

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 ditt AppHost-projekt anropar du AddRedis instansen builder för att lägga till en Redis resurs:

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 Aspire lägger till en containeravbildning i AppHost, som du ser i föregående exempel med avbildningen docker.io/Redis/Redis, skapas en ny instans av Redis på din lokala dator. 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ägg 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. Aspire lägger till ytterligare en containerbild docker.io/redis/redisinsight i AppHost som kör appen Commander.

Notera

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. Aspire lägger till ytterligare en containerbild docker.io/rediscommander/redis-commander i AppHost som kör appen Commander.

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. Datavolymen monteras på /data-vägen i Redis-containern och när en name-parameter inte anges genereras namnet slumpmässigt. Mer information om datavolymer och information om varför de föredras framför bindningsmonteringarfinns i Docker dokument: Volymer.

Lägg till Redis-resursen med data-bindmontering

Om du vill lägga till en databindningsmontering till den 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 bind-mounts har begränsade funktioner jämfört med volymer, som erbjuder bättre prestanda, portabilitet och säkerhet och därför är 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.

Bindmonteringar av data förlitar sig på värddatorns filsystem för att Redis-data ska bevaras mellan omstarter av containrar. Databindningen monteras på sökvägen C:\Redis\Data på Windows (eller /Redis/Data på Unix) på värddatorn i Redis-containern. Mer information om bindningspunkter för data finns i Docker dokumentation: Bindningspunkter.

Lägga till Redis resurs med beständighet

Om du vill lägga till beständighet för den Redis-resursen anropar du metoden WithPersistence med antingen datavolymen eller databindningspunkt:

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.

Integrering av Garnet hosting modellerar en Garnet-resurs som typen GarnetResource. För att komma åt den här typen och API:er som låter dig lägga till den i ditt 📦Aspire.Hosting.Garnet NuGet-paket i projektet AppHost.

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 ditt AppHost-projekt anropar du AddGarnet instansen builder 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 Aspire lägger till en containeravbildning i AppHost, som i det tidigare exemplet med avbildningen ghcr.io/microsoft/garnet, skapas en ny Garnet-instans på din lokala maskin. 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 slumptalsmässigt. Mer information om datavolymer och information om varför de föredras framför bindningsmonteringarfinns i Docker dokument: Volymer.

Lägg till Garnet-resurs med databindningspunkt

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 bind-mounts har begränsade funktioner jämfört med volymer, som erbjuder bättre prestanda, portabilitet och säkerhet och därför är 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. Databindningen monteras på C:\Garnet\Data i Windows (eller /Garnet/Data på Unix) på värdmaskinens väg i Garnet-containern. Mer information om bindningspunkter för data finns i Docker dokumentation: Bindningspunkter.

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ärdintegreringen modellerar en Valkey-resurs av typen ValkeyResource. 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.Valkey NuGet-paket i AppHost-projektet.

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 ditt AppHost-projekt anropar du AddValkey instansen builder 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 Aspire lägger till en containeravbildning i AppHost, som visas i föregående exempel med avbildningen docker.io/valkey/valkey, skapar det en ny Valkey-instans på din lokala dator. 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 vid sökvägen /data i Valkey-containern, och när ingen name parameter anges genereras namnet slumpmässigt. Mer information om datavolymer och information om varför de föredras framför bindningsmonteringarfinns i Docker dokument: Volymer.

Lägg till Valkey-resurs med databindning

Om du vill lägga till en databindning 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 bind-mounts har begränsade funktioner jämfört med volymer, som erbjuder bättre prestanda, portabilitet och säkerhet och därför är 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.

Databindningar förlitar sig på värddatorns filsystem för att bevara Valkey-data vid omstarter av containrar. Databindningsmonteringen är monterad på sökvägen C:\Valkey\Data på Windows (eller /Valkey/Data på Unix) på värddatorn inom Valkey-containern. Mer information om bindningspunkter för data finns i Docker dokumentation: Bindningspunkter.

Lägg till Valkey-resurs med persistens

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.

Kontroller av hosting-integrationens välmående

Redis värdintegrering lägger automatiskt till en hälsokontroll för lämplig resurstyp. Hälsokontrollen verifierar att servern körs och att en anslutning kan upprättas till den.

Integreringen för värdtjänster förlitar sig på NuGet-paketet 📦 AspNetCore.HealthChecks.Redis.

Client integration

Kom igång med AspireRedis distribuerad cachelagringsintegrering genom att installera 📦Aspire. StackExchange.Redis. DistributedCaching NuGet-paket i det klientkrävande projektet, dvs. projektet för programmet som använder den Redis distribuerade cachelagringsklienten. Redis-klientintegrering registrerar en IDistributedCache instans som du kan använda för att interagera med Redis.

dotnet add package Aspire.StackExchange.Redis.DistributedCaching

Lägg till Redis klient

I den Program.cs filen för ditt klientkrävande projekt anropar du AddRedisDistributedCache-tillägget för att registrera de tjänster som krävs för distribuerad cachelagring och lägga till en IDistributedCache för användning via containern för beroendeinmatning.

builder.AddRedisDistributedCache(connectionName: "cache");

Tips

Parametern connectionName måste matcha det namn som används när du lägger till resursen Redis i AppHost-projektet. 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 AppHost-projektet. 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 AppHost-projektet. För mer information, se Lägg till Valkey-resurs.

Du kan sedan hämta instansen IDistributedCache genom beroendeinjektion. Om du till exempel vill hämta cacheminnet från en tjänst:

public class ExampleService(IDistributedCache cache)
{
    // Use cache...
}

Mer information om beroendeinmatning finns i .NET beroendeinmatning.

Lägg till klient med nyckel Redis

På grund av dess begränsningar kan du inte registrera flera IDistributedCache instanser samtidigt. Det kan dock finnas scenarier där du behöver registrera flera Redis klienter och använda en specifik IDistributedCache instans för ett visst anslutningsnamn. Om du vill registrera en nyckelad Redis klient som ska användas för IDistributedCache tjänsten anropar AddKeyedRedisDistributedCache du metoden:

builder.AddKeyedRedisClient(name: "chat");
builder.AddKeyedRedisDistributedCache(name: "product");

Sedan kan du hämta instansen IDistributedCache med hjälp av beroendeinjektion. Om du till exempel vill hämta anslutningen från en exempeltjänst:

public class ExampleService(
    [FromKeyedServices("chat")] IConnectionMultiplexer chatConnectionMux,
    IDistributedCache productCache)
{
    // Use product cache...
}

För mer information om nyckeltjänster, se .NET beroendeinjektion: Nyckeltjänster.

Konfiguration

Den distribuerade AspireRedis cacheintegreringen erbjuder flera alternativ för att konfigurera Redis-anslutningen utifrån projektets krav och konventioner.

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 builder.AddRedisDistributedCache:

builder.AddRedisDistributedCache("cache");

Och 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

Aspire Stack Exchange Redis distribuerad cacheintegrering stöder Microsoft.Extensions.Configuration. Den läser in StackExchangeRedisSettings från konfigurationen med hjälp av Aspire:StackExchange:Redis-nyckeln. Exempel appsettings.json som konfigurerar några av alternativen:

{
  "Aspire": {
    "StackExchange": {
      "Redis": {
        "ConfigurationOptions": {
          "ConnectTimeout": 3000,
          "ConnectRetry": 2
        },
        "DisableHealthChecks": true,
        "DisableTracing": false
      }
    }
  }
}

Det fullständiga Redis distribuerade cachelagringsklientintegreringsschemat JSON finns i Aspire. StackExchange.Redis. DistributedCaching/ConfigurationSchema.json.

Använd inline-delegerade

Du kan också använda delegeringen Action<StackExchangeRedisSettings> för att ställa in vissa eller alla alternativ direkt i koden, till exempel för att konfigurera DisableTracing:

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

Du kan också konfigurera ConfigurationOptions med hjälp av parametern Action<ConfigurationOptions> configureOptions delegate för metoden AddRedisDistributedCache. Om du till exempel vill ange tidsgränsen för anslutningen:

builder.AddRedisDistributedCache(
    "cache",
     null,
     static options => options.ConnectTimeout = 3_000);

Client hälsokontroller för integrering

Som standard Aspire har klientintegreringarhälsokontroller aktiverade för alla tjänster. På samma sätt möjliggör många Aspirehostingintegrationer även hälsokontrolländpunkter. Mer information finns i:

Integreringen AspireRedis distribuerad cachelagring hanterar följande:

  • Lägger till en hälsokontroll då StackExchangeRedisSettings.DisableHealthChecks är false, vilket försöker ansluta till containerinstansen.
  • Integrerar med HTTP-slutpunkten /health, som anger att alla registrerade hälsokontroller måste godkännas för att appen ska betraktas som redo att ta emot trafik.

Observerbarhet och telemetri

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 Aspire översikten över 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

Den AspireRedis distribuerade cachelagringsintegrering använder följande loggkategorier:

  • Aspire.StackExchange.Redis
  • Microsoft.Extensions.Caching.StackExchangeRedis

Spårning

Den AspireRedis distribuerade cachelagringsintegreringen genererar följande spårningsaktiviteter med hjälp av OpenTelemetry:

  • OpenTelemetry.Instrumentation.StackExchangeRedis

Mått

Den AspireRedis distribuerade cachelagringsintegrering stöder för närvarande inte mått som standard på grund av begränsningar i StackExchange.Redis-biblioteket.

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?