Sdílet prostřednictvím


® Integrace .NET AspireRedis* ukládání výstupu do mezipaměti

zahrnuje:integraci hostování a integraci Client

Naučte se používat integraci ukládání výstupu do mezipaměti .NET AspireRedis. Integrace slouží k registraci poskytovatele ukládání výstupu do mezipaměti s imagí kontejneru .

Naučte se používat integraci ukládání výstupu do mezipaměti .NET AspireRedis. Integrace se používá k registraci poskytovatele ukládání výstupu do mezipaměti Garnet simage kontejneru .

Naučte se používat integraci ukládání výstupu do mezipaměti pro .NET AspireRedis. Integrace slouží k registraci poskytovatele ukládání výstupu do mezipaměti Valkey simage kontejneru .

Integrace hostování

Modely integrace hostování Redis reprezentují prostředek Redis jako typ RedisResource. Pro přístup k tomuto typu a rozhraním API, která vám umožní přidat jej do balíčku NuGet 📦Aspire.Hosting.Redis v projektu hostitele aplikace .

dotnet add package Aspire.Hosting.Redis

Pro více informací si přečtěte dotnet add package nebo Správa závislostí balíčků v aplikacích .NET.

Přidejte prostředek Redis

V projektu hostitele aplikace zavolejte AddRedis na instanci builder a přidejte Redis prostředek:

var builder = DistributedApplication.CreateBuilder(args);

var cache = builder.AddRedis("cache");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(cache);

// After adding all resources, run the app...

Když .NET.NET Aspire přidá do hostitele aplikace image kontejneru, jak je znázorněno v předchozím příkladu s imagí docker.io/Redis/Redis, vytvoří na místním počítači novou instanci Redis. Odkaz na váš prostředek Redis (proměnná cache) se přidává do ExampleProject.

Metoda WithReference nakonfiguruje připojení v ExampleProject s názvem "cache". Další informace naleznete v části Životní cyklus prostředků kontejneru.

Spropitné

Pokud byste se raději připojili k existující instanci Redis, volejte místo toho AddConnectionString. Pro více informací se podívejte na Odkaz na existující prostředky.

Přidání prostředku Redis pomocí Redis Insights

Pokud chcete do zdroje Redis přidat Redis Insights, zavolejte metodu 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 je bezplatné grafické rozhraní pro analýzu Redis dat ve všech operačních systémech a nasazeních Redis pomocí našeho asistenta AI Redis Copilot. .NET .NET Aspire přidá do hostitele aplikace, na kterém běží aplikace commander, další image kontejneru docker.io/redis/redisinsight.

Poznámka

Pokud chcete nakonfigurovat port hostitele pro řetězec RedisInsightResource, uskutečněte volání rozhraní API WithHostPort a uveďte požadované číslo portu.

Přidání Redis prostředku pomocí Redis Commander

Chcete-li přidat velitele Redis do prostředku Redis, zavolejte metodu 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 je webová aplikace Node.js, která slouží k zobrazení, úpravám a správě Redis Database. .NET .NET Aspire přidá do hostitele aplikace, na kterém běží aplikace commander, další image kontejneru docker.io/rediscommander/redis-commander.

Spropitné

Chcete-li nakonfigurovat port hostitele pro RedisCommanderResource chain, zavolejte API WithHostPort a poskytněte požadované číslo portu.

Přidání Redis zdroje s datovým objemem

Pokud chcete do prostředku Redis přidat datový svazek, zavolejte metodu WithDataVolume prostředku Redis:

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...

Objem dat se používá k zachování Redis dat mimo životní cyklus kontejneru. Datový svazek se připojí k cestě /data v kontejneru Redis a když není zadaný parametr name, název se náhodně vygeneruje. Další informace o datových svazcích a podrobnosti o tom, proč se upřednostňují před bind mounts, si přečtěte v dokumentaci Docker: Svazky.

Přidání prostředku Redis s připojenou datovou vazbou

Pokud chcete přidat připojení vazby dat k prostředku Redis, zavolejte metodu 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...

Důležitý

Připojení vazby dat mají v porovnání s svazkyomezené funkce, které nabízejí lepší výkon, přenositelnost a zabezpečení, což je vhodnější pro produkční prostředí. Vazebné připojení však umožňuje přímý přístup a úpravy souborů v hostitelském systému, což je ideální pro vývoj a testování s potřebou změn v reálném čase.

Datová připojení typu bind využívají systém souborů hostitelského počítače pro zachování Redis dat při restartech kontejneru. Datový svazek připojení je připojen na cestu C:\Redis\Data ve Windows (nebo /Redis/Data na Unix) na hostitelském počítači v kontejneru Redis. Další informace o připojeních datových vazeb najdete v dokumentaci Docker: Připojení vazby.

Přidání prostředku Redis s perzistencí

Pokud chcete do prostředku Redis přidat trvalost, zavolejte metodu WithPersistence s připojením datového svazku nebo datové vazby:

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...

Předchozí kód přidá trvalost do prostředku Redis pořízením snímků dat Redis v zadaném intervalu a prahové hodnotě. interval je čas mezi exporty snímků a keysChangedThreshold je počet operací změn klíčů potřebných k aktivaci snímku. Další informace o trvalosti najdete v dokumentaci k Redis: trvalost.

Integrace hostingu Garnet modeluje zdroj Garnet jako typ GarnetResource. Pro přístup k tomuto typu a k rozhraním API, která vám umožní přidat je do balíčku NuGet 📦Aspire.Hostování.Garnet v projektu hostitele aplikace .

dotnet add package Aspire.Hosting.Garnet

Další informace najdete v tématu dotnet add package nebo Správa závislostí balíčků v aplikacích .NET.

Přidání prostředku Garnet

V projektu hostitele vaší aplikace zavolejte AddGarnet na instanci builder pro přidání prostředku Garnet:

var builder = DistributedApplication.CreateBuilder(args);

var cache = builder.AddGarnet("cache");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(cache);

// After adding all resources, run the app...

Když .NET.NET Aspire přidá do hostitele aplikace image kontejneru, jak je znázorněno v předchozím příkladu s imagí ghcr.io/microsoft/garnet, vytvoří na místním počítači novou instanci Garnetu. Do ExampleProjectse přidá odkaz na váš prostředek Garnet (proměnná cache).

Metoda WithReference nakonfiguruje připojení v ExampleProject s názvem "cache". Další informace najdete v sekci životní cyklus zdroje kontejneru.

Spropitné

Pokud byste se raději připojili k existující instanci Garnet, zavolejte místo toho AddConnectionString. Další informace naleznete pod Odkaz na existující prostředky.

Přidání zdroje Garnet s datovým svazkem

Pokud chcete přidat datový svazek do prostředku Garnet, zavolejte metodu AddGarnet prostředku Garnet:

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...

Objem dat se používá k zachování dat Garnet mimo životní cyklus kontejneru. Datový svazek se připojí k cestě /data v kontejneru Garnet a pokud není zadaný parametr name, název se náhodně vygeneruje. Další informace o datových svazcích a podrobnosti o tom, proč se upřednostňují před bind mounty, viz dokumentace Docker: Svazky.

Přidejte prostředek Garnet s připojením pro vazbu dat

Pokud chcete přidat připojení datové vazby k prostředku Garnet, zavolejte metodu 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...

Důležitý

Připojení dat pomocí vazby mají omezenou funkcionalitu ve srovnání se svazky, které nabízejí lepší výkon, přenositelnost a zabezpečení, což je činí vhodnějšími pro produkční prostředí. Připojení typu bind však umožňují přímý přístup a úpravy souborů na hostitelském systému, což je ideální pro vývoj a testování, kde jsou potřebné změny v reálném čase.

Datové vazební úchyty využívají souborový systém hostitelského počítače k uchování dat Garnet při restartování kontejneru. Připojení datového svazku je namontováno na cestu C:\Garnet\Data ve Windows (nebo /Garnet/Data na Unix) na hostitelském počítači v rámci kontejneru Garnet. Další informace o svazcích typu bind najdete v dokumentaci Docker: Svazky typu bind.

Přidání zdroje Garnet s perzistencí

Pokud chcete do prostředku Garnet přidat trvalost, zavolejte metodu WithPersistence s připojením datového svazku nebo datové vazby:

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...

Předchozí kód přidá trvalost do prostředku Redis pořízením snímků dat Garnetu v zadaném intervalu a prahové hodnotě. interval je čas mezi exporty snímků a keysChangedThreshold je počet operací změn klíčů potřebných k aktivaci snímku. Další informace o perzistenci najdete v dokumentaci k Redis: perzistence.

Integrační model Valkey modeluje prostředek Valkey jako typ ValkeyResource. Chcete-li mít přístup k tomuto typu a rozhraním API, které vám umožní přidat je do balíčku NuGet 📦Aspire.Hosting.Valkey v projektu hostitele aplikace .

dotnet add package Aspire.Hosting.Valkey

Další informace najdete v tématu dotnet add package nebo Správa závislostí balíčků v .NET aplikacích.

Přidejte prostředek Valkey

V projektu hostitele aplikace zavolejte AddValkey v instanci builder a přidejte prostředek Valkey:

var builder = DistributedApplication.CreateBuilder(args);

var cache = builder.AddValkey("cache");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(cache);

// After adding all resources, run the app...

Když .NET.NET Aspire přidá obraz kontejneru do hostitele aplikace, jak je znázorněno v předchozím příkladu s obrazem docker.io/valkey/valkey, vytvoří na místním počítači novou instanci Valkey. Do ExampleProjectse přidá odkaz na zdroj Valkey (proměnná cache).

Metoda WithReference nakonfiguruje připojení v ExampleProject s názvem "cache". Pro více informací viz životní cyklus kontejneru.

Spropitné

Pokud se raději připojíte k existující instanci Valkey, zavolejte místo toho AddConnectionString. Pro více informací si projděte Podívejte se na dostupné zdroje.

Přidání prostředku Valkey s datovým svazkem

Pokud chcete přidat datový svazek do zdroje Valkey, zavolejte metodu AddValkey na zdroj Valkey.

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...

Objem dat se používá k zachování dat Valkey mimo životní cyklus kontejneru. Datový svazek se připojí k cestě /data v kontejneru Valkey a pokud není zadaný parametr name, název se náhodně vygeneruje. Další informace o datových svazcích a podrobnosti o tom, proč se upřednostňují před bind mounty, najdete v dokumentaci Docker: Svazky.

Přidejte prostředek Valkey s připojením datového svazku.

Pro přidání datové vazby k prostředku Valkey zavolejte metodu 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...

Důležitý

Datové bind mounts mají omezenou funkčnost ve srovnání se svazky, které nabízejí lepší výkon, přenositelnost a zabezpečení, díky čemuž jsou vhodnější pro produkční prostředí. Připojení vazby však umožňují přímý přístup a úpravy souborů v hostitelském systému, které jsou ideální pro vývoj a testování, kde jsou potřebné změny v reálném čase.

Datové vazby při připojování spoléhají na souborový systém hostitelského stroje pro uložení dat Valkey při opětovném spuštění kontejneru. Datová vazba je připojena k cestě C:\Valkey\Data ve Windows (nebo /Valkey/Data na Unix) na hostitelském počítači v kontejneru Valkey. Další informace o datových připojeních najdete v dokumentaci Docker: Připojení datových vazeb.

Přidání prostředku Valkey s trvalostí

Pokud chcete do prostředku Valkey přidat trvalost, zavolejte metodu WithPersistence s připojením datového svazku nebo vazby dat:

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...

Předchozí kód přidá trvalost do prostředku Redis pořízením snímků dat Valkey v zadaném intervalu a prahové hodnotě. interval je čas mezi exporty snímků a keysChangedThreshold je počet operací změn klíčů potřebných k aktivaci snímku. Další informace o přetrvávání najdete v dokumentaci k Redis: Přetrvávání.

Hostování kontrol stavu integrace

Integrace hostování Redis automaticky přidá kontrolu stavu pro příslušný typ prostředku. Kontrola stavu ověřuje, že je spuštěná server a že se k němu dá navázat připojení.

Integrace hostování spoléhá na 📦 AspNetCore.HealthChecks.Redis balíček NuGet.

integrace Client

Pokud chcete začít používat .NET Aspire Stack Exchange Redis ukládání výstupu do mezipaměti client integrace, nainstalujte 📦Aspire. StackExchange.Redis. OutputCaching balíček NuGet v projektu clientspotřebovávání, tj. projekt aplikace, která používá výstupní ukládání do mezipaměti client.

dotnet add package Aspire.StackExchange.Redis.OutputCaching

Přidání ukládání výstupu do mezipaměti

V souboru Program.cs vašeho projektu, který využívá client, použijte metodu rozšíření AddRedisOutputCache na jakémkoli IHostApplicationBuilder a zaregistrujte tak požadované služby pro ukládání výstupu do mezipaměti.

builder.AddRedisOutputCache(connectionName: "cache");

Spropitné

Parametr connectionName se musí shodovat s názvem použitým při přidávání prostředku Redis do hostitelského projektu aplikace. Další informace najdete v sekci Přidat Redis prostředek.

Rada

Parametr connectionName se musí shodovat s názvem použitým při přidávání prostředku Garnet do hostitelského projektu aplikace. Pro více informací viz Přidat zdroj Garnet.

Spropitné

Parametr connectionName se musí shodovat s názvem použitým při přidávání prostředku Valkey do hostitelského projektu aplikace. Další informace najdete v tématu Přidání prostředku Valkey.

Přidejte middleware do kanálu zpracování požadavků voláním UseOutputCache(IApplicationBuilder):

var app = builder.Build();

app.UseOutputCache();

Pro minimálních API aplikacínakonfigurujte koncový bod pro ukládání do mezipaměti buď voláním CacheOutput, nebo použitím OutputCacheAttribute, jak je znázorněno v následujících příkladech:

app.MapGet("/cached", () => "Hello world!")
   .CacheOutput();

app.MapGet(
    "/attribute",
    [OutputCache] () => "Hello world!");

U aplikací s kontrolery použijte atribut [OutputCache] pro metodu akce. U aplikací Razor Pages použijte atribut pro třídu Razor Page.

Konfigurace

Integrace ukládání výstupu .NET Aspire Stack Exchange Redis do mezipaměti nabízí několik možností konfigurace připojení Redis na základě požadavků a konvencí projektu.

Použijte připojovací řetězec

Při použití připojovacího řetězce z oddílu konfigurace ConnectionStrings můžete při volání AddRedisOutputCachezadat název připojovacího řetězce:

builder.AddRedisOutputCache(connectionName: "cache");

Připojovací řetěz se pak načte z oddílu konfigurace ConnectionStrings:

{
  "ConnectionStrings": {
    "cache": "localhost:6379"
  }
}

Další informace o formátování tohoto připojovacího řetězce najdete v dokumentaci ke konfiguraci Stack Exchange Redis.

Použití zprostředkovatelů konfigurace

Integrace .NET Aspire Stack Exchange Redis podporuje Microsoft.Extensions.Configuration. Načte StackExchangeRedisSettings z konfigurace pomocí klíče Aspire:StackExchange:Redis. Příklad appsettings.json, který konfiguruje některé z možností:

{
  "Aspire": {
    "StackExchange": {
      "Redis": {
        "ConnectionString": "localhost:6379",
        "DisableHealthChecks": true,
        "DisableTracing": false
      }
    }
  }
}

Kompletní Redisclient schéma integrace JSON najdete v AspireStackExchangeRedis/ConfigurationSchemajson.

Použití vložených delegátů

Můžete také předat delegáta Action<StackExchangeRedisSettings> configurationSettings k nastavení některých nebo všech možností přímo v kódu, například k zakázání kontroly stavu přímo z kódu:

builder.AddRedisOutputCache(
    "cache",
    static settings => settings.DisableHealthChecks  = true);

Můžete také nastavit ConfigurationOptions pomocí parametru delegáta Action<ConfigurationOptions> configureOptions metody AddRedisOutputCache. Pokud například chcete nastavit časový limit připojení:

builder.AddRedisOutputCache(
    "cache",
    static settings => settings.ConnectTimeout = 3_000);

Kontroly stavu

Integrace .NET.NET Aspire ve výchozím nastavení umožňují kontroly stavu pro všechny služby. Pro více informací viz přehled integrací .NET.NET Aspire.

Integrace zachytávání výstupu z .NET Aspire Stack Exchange Redis do mezipaměti zpracovává následující:

  • Přidá kontrolu stavu StackExchange.Redis, pokusí se otevřít připojení a vyvolá výjimku, když se to nepodaří.
  • Integruje se s HTTP koncovým bodem /health, který stanovuje, že všechny registrované kontroly stavu musí být úspěšné, aby byla aplikace považována za připravenou přijímat provoz.

Pozorovatelnost a telemetrie

.NET .NET Aspire integrace automaticky nastaví konfigurace protokolování, trasování a metrik, které se někdy označují jako pilíře pozorovatelnosti. Další informace o pozorovatelnosti a telemetrii integrace najdete v přehledu integrace .NET.NET Aspire. V závislosti na zálohovací službě můžou některé integrace podporovat pouze některé z těchto funkcí. Například některé integrace podporují protokolování a trasování, ale ne metriky. Funkce telemetrie je také možné zakázat pomocí technik uvedených v části Konfigurace.

Protokolování

Integrace .NET Aspire Stack Exchange Redis ukládání výstupu do mezipaměti používá následující kategorie protokolů:

  • Aspire.StackExchange.Redis
  • Microsoft.AspNetCore.OutputCaching.StackExchangeRedis

Trasování

Integrace .NET Aspire Stack Exchange Redis ukládání výstupu do mezipaměti bude generovat následující aktivity trasování pomocí OpenTelemetry:

  • OpenTelemetry.Instrumentation.StackExchangeRedis

Metryky

Integrace .NET Aspire Stack Exchange Redis ukládání výstupu do mezipaměti aktuálně ve výchozím nastavení nepodporuje metriky kvůli omezením knihovny StackExchange.Redis.

integrace hostování AzureRedis

Pokud chcete nasadit prostředky Redis do Azure, nainstalujte balíček 📦Aspire.Hosting.Azure.Redis NuGet.

dotnet add package Aspire.Hosting.Azure.Redis

Přidejte prostředek Azure Cache for Redisserver

Po instalaci balíčku .NET Aspire hostování AzureRedis volejte metodu rozšíření AddAzureRedis v hostitelském projektu aplikace:

var builder = DistributedApplication.CreateBuilder(args);

var cache = builder.AddAzureRedis("azcache")

var exampleProject = builder.AddProject<Projects.ExampleProject>()
                            .WithReference(cache);

Předchozí volání AddAzureRedis nakonfiguruje prostředek Redisserver k nasazení jako Azure Cache for Redis.

Důležitý

Ve výchozím nastavení AddAzureRedis konfiguruje ověřování ID Microsoft Entra. To vyžaduje změny aplikací, které se potřebují připojit k těmto prostředkům, například client integrace.

Přidat výstup Azure Cache for Redisclient

Ve výchozím nastavení se při volání AddAzureRedis v integraci hostování Redis nakonfiguruje 📦 Microsoftu.Azure. StackExchangeRedis balíčku NuGet pro povolení ověřování:

dotnet add package Microsoft.Azure.StackExchangeRedis

Připojení Redis lze využívat pomocí integrace client a Microsoft.Azure.StackExchangeRedis. Zvažte následující konfigurační kód:

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;
});

Další informace najdete v MicrosoftAzure.StackExchangeRedis repozitáři.

Viz také

*: Redis je registrovaná ochranná známka společnosti Redis Ltd. Všechna práva v nich jsou vyhrazena pro Redis Ltd. Jakékoli použití společností Microsoft je určené pouze pro referenční účely a nezoznačuje žádné sponzorství, doporučení ani přidružení mezi Redis a Microsoftem. Návrat na horní?