Sdílet prostřednictvím


.NET Aspire Redis * integrace distribuovaného ukládání do mezipaměti ®

zahrnuje:integrace hostingu a integrace Client

Naučte se používat .NET AspireRedis integraci distribuované mezipaměti. Knihovna Aspire.StackExchange.Redis.DistributedCaching se používá k registraci poskytovatele IDistributedCache podporovaného Redisserver s obrazem kontejneru docker.io/library/redis.

Naučte se používat .NET AspireRedis integraci distribuované mezipaměti. Knihovna slouží k registraci poskytovatele IDistributedCache Garnet pomocíimage kontejneru .

Naučte se používat .NET AspireRedis integraci distribuované mezipaměti. Knihovna Aspire.StackExchange.Redis.DistributedCaching slouží k registraci poskytovatele IDistributedCache, který je podporovaný Valkeyserver, s kontejneru image docker.io/valkey/valkey.

Integrace hostování

Integrace hostingu Redis modeluje prostředek Redis jako typ RedisResource. Přístup k tomuto typu a rozhraním API, které vám umožní přidat ho do 📦Aspire.HostingRedis balíčku NuGet v hostitelském projektu aplikace .

dotnet add package Aspire.Hosting.Redis

Další informace najdete v tématu dotnet add package nebo Manage package dependencies in .NET applications.

Přidej prostředek Redis

V projektu hostitele vaší aplikace zavolejte instanci builder na AddRedis a přidejte prostředek Redis.

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. Do ExampleProjectse přidá odkaz na váš prostředek Redis (proměnná cache).

Metoda WithReference nakonfiguruje připojení v ExampleProject s názvem "cache". Pro více informací se podívejte na životní cyklus zdrojů kontejneru.

Spropitné

Pokud byste se raději připojili k existující instanci Redis, volejte místo toho AddConnectionString. Pro více informací viz Odkaz na stávající zdroje.

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

Pokud chcete do prostředku 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

Chcete-li nakonfigurovat port hostitele pro řetězec RedisInsightResource, zavolejte API WithHostPort a zadejte požadované číslo portu.

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

Chcete-li přidat Redis velitele do zdroje 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.

Rada

Pokud chcete nakonfigurovat port hostitele pro řetězec RedisCommanderResource, zavolejte rozhraní API WithHostPort a zadejte požadované číslo portu.

Přidejte prostředek Redis s datovým svazkem

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 připojení vazby, najdete v dokumentaci Docker: Svazky.

Přidání zdroje Redis s připojením typu bind mount pro data

Chcete-li přidat datový bind mount 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í. Vazby však umožňují přímý přístup a úpravy souborů v hostitelském systému, ideální pro vývoj a testování, kde jsou změny v reálném čase potřebné.

Připojení vazby dat využívají systém souborů hostitelského počítače k zachování Redis dat napříč restartováními kontejneru. Vazba dat je namontována na 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řidat Redis zdroj 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 perzistenci najdete v dokumentaci k Redis: perzistence.

Integrace hostování Garnet modeluje prostředek Garnet ve formě typu GarnetResource. Přístup k tomuto typu a rozhraním API, které vám umožní přidat ho do 📦Aspire. Hostování.Garnet balíčku NuGet 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 aplikace zavolejte AddGarnet na instanci builder, abyste přidali zdroj Garnetu:

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 tématu životní cyklus prostředků kontejneru.

Spropitné

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

Přidání prostředku Garnet s datovým objemem

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 vázanými svazky, najdete v dokumentaci Docker: Svazky.

Přidání prostředku Garnet s datovým bind mountem

Chcete-li přidat datovou vazbu k prostředku Garnet, použijte 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ý

Datové svazky připojení mají omezené funkce ve srovnání s svazky, které nabízejí lepší výkon, přenositelnost a zabezpečení, což je činí vhodnějšími pro produkční prostředí. Bind mounty 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řeba změny v reálném čase.

Připojení pro datová úložiště využívají systém souborů hostitelského počítače k uchování dat Garnet při restartování kontejneru. Připojení datového svazku je připojeno k cestě C:\Garnet\Data ve systému Windows (nebo /Garnet/Data na Unix) na hostitelském počítači v kontejneru Garnet. Další informace o připojeních datových vazeb najdete v dokumentaci Docker: Připojení vazby.

Přidání prostředku Garnet s persistencí

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 hostování Valkey modeluje prostředek Valkey jako typ ValkeyResource. Přístup k tomuto typu a k rozhraním API, která umožňují jeho přidání do 📦Aspire.Hosting.Valkey balíčku NuGet v projektu hostitele aplikace .

dotnet add package Aspire.Hosting.Valkey

Další informace najdete v tématu dotnet add package nebo Manage package dependencies in .NET applications.

Přidejte prostředek Valkey

V projektu hostitele aplikace zavolejte AddValkey pro 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á do hostitele aplikace obraz kontejneru, jak je znázorněno v předchozím příkladu s obrazem docker.io/valkey/valkey, vytvoří na vašem místním počítači novou instanci Valkey. Do ExampleProjectse přidá odkaz na prostředek Valkey (proměnná cache).

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

Spropitné

Pokud se raději připojíte k existující instanci Valkey, zavolejte místo toho AddConnectionString. Další informace naleznete v tématu Odkaz na existující prostředky.

Přidejte prostředek Valkey s datovým svazkem

Pokud chcete přidat datový svazek do prostředku Valkey, zavolejte metodu AddValkey prostředku 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č jsou upřednostňovány před vazbami, je uvedeno v dokumentaci Docker: Svazky.

Přidání prostředku Valkey s připojením datového vazebního bodu

Chcete-li přidat datovou vazbu 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ý

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

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

Přidat prostředek Valkey s persistencí

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 trvalosti najdete v dokumentaci k Redis: Persistence.

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

Integrační hostování spoléhá na 📦 AspNetCore.HealthChecks a balíček NuGetRedis.

integrace Client

Pokud chcete začít s integrací distribuovaného ukládání do mezipaměti pro .NET AspireRedis, nainstalujte balíček NuGet 📦Aspire.StackExchange.Redis.DistributedCaching v projektu client, tj. v projektu aplikace, která využívá Redis distribuované ukládání do mezipaměti client.

dotnet add package Aspire.StackExchange.Redis.DistributedCaching

Přidání Redisclient

V souboru Program.cs vašeho projektu, který spotřebovává client, použijte rozšíření AddRedisDistributedCache pro registraci požadovaných služeb pro distribuovanou cache a přidejte IDistributedCache pro použití prostřednictvím kontejneru pro závislostní injektáž.

builder.AddRedisDistributedCache(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 naleznete v části Přidání Redis prostředků.

Spropitné

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. Další informace najdete v tématu přidání prostředků 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.

Potom můžete načíst instanci IDistributedCache pomocí vkládání závislostí. Pokud například chcete načíst mezipaměť ze služby:

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

Další informace o injektáži závislostí najdete v tématu .NET injektáž závislostí.

Přidejte zakódované Redisclient

Mohou nastat situace, kdy chcete registrovat více instancí IDistributedCache s různými názvy připojení. Pokud chcete zaregistrovat klíčované klienty Redis, zavolejte metodu AddKeyedRedisDistributedCache:

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

Potom můžete získat instance IDistributedCache pomocí dependency injection. Pokud například chcete načíst připojení z příkladové služby:

public class ExampleService(
    [FromKeyedServices("chat")] IDistributedCache chatCache,
    [FromKeyedServices("product")] IDistributedCache productCache)
{
    // Use caches...
}

Další informace o službách s klíči najdete v části .NET injektáž závislostí: služby s klíči.

Konfigurace

Integrace .NET AspireRedis distribuované mezipaměti poskytuje 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í builder.AddRedisDistributedCachezadat název připojovacího řetězce:

builder.AddRedisDistributedCache("cache");

A pak se připojovací řetězec načte z oddílu konfigurace ConnectionStrings.

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

Další informace o formátování tohoto řetězce připojení najdete v konfigurační dokumentaci 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í schéma integrace RedisclientJSON najdete v tématu Aspire. StackExchange.Redis/ConfigurationSchema.json.

Používejte vložené delegáty

Můžete také předat delegáta Action<StackExchangeRedisSettings> k nastavení některých nebo všech možností na místě, například ke konfiguraci delegáta DisableTracing.

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

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

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

Kontroly stavu

Ve výchozím nastavení integrace .NET.NET Aspire umožňují kontroly stavu pro všechny služby. Další informace naleznete v tématu .NETpřehled integrací.NET Aspire.

Integrace distribuované mezipaměti .NET AspireRedis zpracovává následující:

  • Přidá kontrolu stavu StackExchange.Redis, pokusí se otevřít připojení a vyvolá chybu, když se to nepodaří.
  • Integruje se s HTTP koncovým bodem /health, který určuje, že všechny registrované zdravotní kontroly musí projít, aby byla aplikace považována za připravenou pro přijímání provozu.

Pozorovatelnost a telemetrie

.NET .NET Aspire integrace automaticky nastaví konfiguraci protokolování, trasování a metrik, které jsou někdy označovány 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 distribuovaného ukládání do mezipaměti .NET AspireRedis používá následující kategorie protokolů:

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

Trasování

Integrace distribuovaného ukládání do mezipaměti .NET AspireRedis bude pomocí OpenTelemetrygenerovat následující aktivity sledování:

  • OpenTelemetry.Instrumentation.StackExchangeRedis

Metriky

Integrace distribuované mezipaměti .NET AspireRedis momentálně ve výchozím nastavení metriky nepodporuje kvůli omezením knihovny StackExchange.Redis.

integrace hostování AzureRedis

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

dotnet add package Aspire.Hosting.Azure.Redis

Přidání prostředku 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, aby byl nasazen jako Azure Cache for Redis.

Důležitý

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

Přidejte Azure Cache for Redis distribuované client

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

dotnet add package Microsoft.Azure.StackExchangeRedis

Připojení Redis může být využíváno 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.AddRedisDistributedCache("cache", configureOptions: options =>
{
    options.Defaults = configurationOptions.Defaults;
});

Další informace najdete v Microsoftu.Azure. Úložiště StackExchangeRedis.

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í?