Udostępnij za pośrednictwem


® integracja buforowania danych wyjściowych .NET AspireRedis*

Obejmuje:integracja hostingu obejmuje integrację hostingu — Client integracja dołączonaClient

Dowiedz się, jak używać integracji buforowania danych wyjściowych .NET AspireRedis. Integracja klienta Aspire.StackExchange.Redis.OutputCaching służy do rejestrowania usługi buforowania wyjściowego ASP.NET Core, obsługiwanej przez serwer Redis przy użyciu obrazu kontenera docker.io/library/redis.

Dowiedz się, jak używać integracji buforowania danych wyjściowych .NET AspireRedis. Integracja klienta Aspire.StackExchange.Redis.OutputCaching służy do rejestrowania dostawcy buforowania wyjściowego ASP.NET Core wspieranego przez serwer Garnet za pomocą obrazu kontenera ghcr.io/microsoft/garnet.

Dowiedz się, jak używać integracji buforowania danych wyjściowych .NET AspireRedis. Integracja klienta Aspire.StackExchange.Redis.OutputCaching służy do rejestrowania dostawcy buforowania wyjściowego ASP.NET Core, wspieranego przez serwer Valkey, przy użyciu obrazu kontenera docker.io/valkey/valkey.

Integracja hostingu

Integracja hostingu Redis modeluje zasób Redis jako typ RedisResource. Aby uzyskać dostęp do tego typu i interfejsów API do wyrażania ich jako zasobów w projekcie hosta aplikacji , dodaj pakiet NuGet 📦Aspire.Hosting.Redis.

dotnet add package Aspire.Hosting.Redis

Aby uzyskać więcej informacji, zobacz dotnet add package lub Zarządzanie zależnościami pakietów w aplikacjach .NET.

Dodawanie zasobu Redis

W projekcie hosta aplikacji wywołaj AddRedis na instancji builder, aby dodać zasób Redis.

var builder = DistributedApplication.CreateBuilder(args);

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

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

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

Gdy .NET.NET Aspire dodaje obraz kontenera do hosta aplikacji, jak pokazano w poprzednim przykładzie z obrazem docker.io/Redis/Redis, tworzy nowe wystąpienie Redis na komputerze lokalnym. Odwołanie do Twojego zasobu Redis (zmiennej cache) jest dodawane do ExampleProject.

Metoda WithReference konfiguruje połączenie w ExampleProject o nazwie "cache". Aby uzyskać więcej informacji, zobacz Cykl życia zasobów kontenera.

Napiwek

Jeśli wolisz nawiązać połączenie z istniejącym wystąpieniem Redis, wywołaj AddConnectionString zamiast tego. Aby uzyskać więcej informacji, zobacz Referencje istniejących zasobów.

Dodawanie zasobu Redis za pomocą usługi Redis Insights

Aby dodać Redis Insights do zasobu Redis, wywołaj metodę 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 to darmowy interfejs graficzny do analizowania danych Redis na wszystkich systemach operacyjnych i wdrożeniach Redis, wspierany przez naszego asystenta sztucznej inteligencji, Redis Copilot. .NET .NET Aspire dodaje kolejny obraz kontenera docker.io/redis/redisinsight do hosta aplikacji, który uruchamia aplikację dowódcy.

Notatka

Aby skonfigurować port hosta dla łańcucha RedisInsightResource, należy wywołać interfejs API WithHostPort i podać żądany numer portu.

Dodawanie zasobu Redis za pomocą dowódcy Redis

Aby dodać Redis Commander do zasobu Redis, wywołaj metodę 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 to aplikacja internetowa Node.js używana do wyświetlania, edytowania i zarządzania bazą danych Redis. .NET .NET Aspire dodaje kolejny obraz kontenera docker.io/rediscommander/redis-commander do hosta aplikacji, który uruchamia aplikację dowódcy.

Napiwek

Aby skonfigurować port hosta dla łańcucha RedisCommanderResource, należy wywołać interfejs API WithHostPort i podać żądany numer portu.

Dodawanie zasobu Redis z woluminem danych

Aby dodać wolumin danych do zasobu Redis, wywołaj metodę WithDataVolume w zasobie 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...

Wolumen danych służy do utrwalania danych Redis poza cyklem życia kontenera. Wolumin danych jest instalowany w ścieżce /data w kontenerze Redis, a gdy nie podano parametru name, nazwa jest generowana losowo. Aby uzyskać więcej informacji na temat woluminów danych i szczegóły dotyczące tego, dlaczego są preferowane zamiast montowań wiązań , zobacz dokumentację Docker: Woluminy.

Dodaj zasób Redis z montowaniem wiążącym danych

Aby dodać powiązanie danych do zasobu Redis, wywołaj metodę 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...

Ważny

Montowania powiązane danych mają ograniczoną funkcjonalność w porównaniu z woluminami, które zapewniają lepszą wydajność, przenośność i bezpieczeństwo, co czyni je bardziej odpowiednimi dla środowisk produkcyjnych. Jednak punkty wiązania umożliwiają bezpośredni dostęp i modyfikację plików na systemie hosta, co jest idealne do programowania i testowania wymagających zmian w czasie rzeczywistym.

Montaże powiązań danych polegają na systemie plików maszyny hosta w celu utrwalania Redis danych po ponownym uruchomieniu kontenera. Powiązanie danych jest montowane w ścieżce C:\Redis\Data w systemie Windows (lub /Redis/Data w Unix) na maszynie hosta w kontenerze Redis. Aby uzyskać więcej informacji na temat montowania powiązań danych, zobacz Docker docs: Bind mounts.

Dodaj zasób Redis z trwałością

Aby dodać trwałość do zasobu Redis, wywołaj metodę WithPersistence za pomocą wolumenu danych lub montowania powiązań danych.

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

Powyższy kod nadaje trwałość zasobowi Redis przez utworzenie migawek danych Redis w określonych interwałach czasowych i przy określonym progu. interval to czas między eksportowaniem migawek, a keysChangedThreshold to liczba operacji zmiany klucza potrzebnych do wyzwolenia migawki. Aby uzyskać więcej informacji na temat trwałości, zobacz Redis docs: Trwałość.

Integracja hostingu Garnet modeluje zasób Garnet jako typ GarnetResource. Aby uzyskać dostęp do tego typu i interfejsów API, które umożliwiają dodanie go do pakietu NuGet 📦Aspire.Hosting.Garnet w projekcie hosta aplikacji .

dotnet add package Aspire.Hosting.Garnet

Aby uzyskać więcej informacji, zobacz dotnet add package lub Zarządzanie zależnościami pakietów w aplikacjach .NET.

Dodawanie zasobu Garnet

W projekcie hostującym aplikację wywołaj AddGarnet na instancji builder, aby dodać zasób Garnet:

var builder = DistributedApplication.CreateBuilder(args);

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

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

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

Gdy .NET.NET Aspire dodaje obraz kontenera do hosta aplikacji, jak pokazano w poprzednim przykładzie z obrazem ghcr.io/microsoft/garnet, tworzy nowe wystąpienie Garnet na twoim lokalnym komputerze. Odwołanie do zasobu Garnet (zmienna cache) jest dodawane do zmiennej ExampleProject.

Metoda WithReference konfiguruje połączenie w ExampleProject o nazwie "cache". Aby uzyskać więcej informacji, zobacz Cykl życia zasobów kontenera.

Napiwek

Jeśli wolisz nawiązać połączenie z istniejącym wystąpieniem Garnet, zamiast tego wywołaj AddConnectionString. Aby uzyskać więcej informacji, zobacz Referencje istniejących zasobów.

Dodawanie zasobu Garnet z woluminem danych

Aby dodać wolumin danych do zasobu Garnet, wywołaj metodę AddGarnet w zasobie 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...

Wolumin danych jest wykorzystywany do przechowywania danych Garnet poza cyklem życia jego kontenera. Wolumin danych jest instalowany w ścieżce /data w kontenerze Garnet i gdy nie podano parametru name, nazwa jest generowana losowo. Aby uzyskać więcej informacji na temat woluminów danych i szczegóły dotyczące tego, dlaczego są preferowane zamiast montowań wiązań , zobacz dokumentację Docker: Woluminy.

Dodaj zasób Garnet z powiązaniem danych poprzez mount

Aby dodać dowiązanie danych do zasobu Garnet, wywołaj metodę 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...

Ważny

Montowania powiązane danych mają ograniczoną funkcjonalność w porównaniu z woluminami, które zapewniają lepszą wydajność, przenośność i bezpieczeństwo, co czyni je bardziej odpowiednimi dla środowisk produkcyjnych. Jednak punkty wiązania umożliwiają bezpośredni dostęp i modyfikację plików na systemie hosta, co jest idealne do programowania i testowania wymagających zmian w czasie rzeczywistym.

Montowanie danych przy użyciu powiązań opiera się na systemie plików komputera hosta dla utrwalenia danych Garnet między ponownymi uruchomieniami kontenera. Powiązanie danych jest montowane w ścieżce C:\Garnet\Data w systemie Windows (lub /Garnet/Data w Unix) na maszynie hosta w kontenerze Garnet. Aby uzyskać więcej informacji na temat montowania powiązań danych, zobacz Docker docs: Bind mounts.

Dodaj zasób Garnet z zachowaniem trwałości

Aby dodać trwałość do zasobu Garnet, wywołaj metodę WithPersistence z użyciem woluminu danych lub montowania powiązań danych.

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

Powyższy kod zapewnia trwałość zasobu Redis, tworząc migawki danych Garnet w określonym interwale i progu. interval to czas między eksportowaniem migawek, a keysChangedThreshold to liczba operacji zmiany klucza potrzebnych do wyzwolenia migawki. Aby uzyskać więcej informacji na temat trwałości, zobacz Redis docs: Trwałość.

Integracja hostingu Valkey modeluje zasób Valkey jako typ ValkeyResource. Aby uzyskać dostęp do tego typu oraz interfejsów API umożliwiających jego dodanie do pakietu NuGet 📦Aspire.Hosting.Valkey w projekcie hosta aplikacji .

dotnet add package Aspire.Hosting.Valkey

Aby uzyskać więcej informacji, zobacz dotnet add package lub Zarządzanie zależnościami pakietów w aplikacjach .NET.

Dodawanie zasobu Valkey

W projekcie hosta aplikacji wywołaj AddValkey na instancji builder, aby dodać zasób Valkey.

var builder = DistributedApplication.CreateBuilder(args);

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

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

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

Gdy .NET.NET Aspire dodaje obraz kontenera do hosta aplikacji, jak pokazano na wcześniejszym przykładzie z obrazem docker.io/valkey/valkey, tworzy nowe wystąpienie Valkey na komputerze lokalnym. Odwołanie do zmiennej zasobu Valkey (cache) zostaje dodane do ExampleProject.

Metoda WithReference konfiguruje połączenie w ExampleProject o nazwie "cache". Aby uzyskać więcej informacji, zobacz Cykl życia zasobów kontenera.

Napiwek

Jeśli wolisz nawiązać połączenie z istniejącym wystąpieniem Valkey, wywołaj zamiast tego AddConnectionString. Aby uzyskać więcej informacji, zobacz Referencje istniejących zasobów.

Dodawanie zasobu Valkey z woluminem danych

Aby dodać wolumin danych do zasobu Valkey, wywołaj metodę AddValkey w zasobie 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...

Wolumin danych jest używany do utrwalania danych Valkey poza cyklem życia kontenera. Wolumin danych jest instalowany w ścieżce /data w kontenerze Valkey, a gdy nie podano parametru name, nazwa jest generowana losowo. Aby uzyskać więcej informacji na temat woluminów danych i szczegóły dotyczące tego, dlaczego są preferowane zamiast montowań wiązań , zobacz dokumentację Docker: Woluminy.

Dodaj zasób Valkey z montowaniem wiązania danych

Aby dodać punkt montowania danych do zasobu Valkey, wywołaj metodę 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...

Ważny

Montowania powiązane danych mają ograniczoną funkcjonalność w porównaniu z woluminami, które zapewniają lepszą wydajność, przenośność i bezpieczeństwo, co czyni je bardziej odpowiednimi dla środowisk produkcyjnych. Jednak punkty wiązania umożliwiają bezpośredni dostęp i modyfikację plików na systemie hosta, co jest idealne do programowania i testowania wymagających zmian w czasie rzeczywistym.

Podłączenia danych polegają na systemie plików maszyny hosta do zachowania danych Valkey podczas restartów kontenera. Powiązanie danych jest zamontowane w ścieżce C:\Valkey\Data na systemie Windows (lub /Valkey/Data na Unix) na maszynie hosta w kontenerze Valkey. Aby uzyskać więcej informacji na temat montowania powiązań danych, zobacz Docker docs: Bind mounts.

Dodaj zasób Valkey z trwałością zapisu

Aby dodać trwałość do zasobu Valkey, wywołaj metodę WithPersistence za pomocą woluminu danych lub instalacji powiązania danych:

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

Kod powyżej dodaje funkcję zapamiętywania do zasobu Redis poprzez regularne wykonywanie migawek danych Valkey w określonym interwale i po przekroczeniu progu. interval to czas między eksportowaniem migawek, a keysChangedThreshold to liczba operacji zmiany klucza potrzebnych do wyzwolenia migawki. Aby uzyskać więcej informacji na temat trwałości, zobacz Redis docs: Trwałość.

Przeprowadzanie kontroli stanu integracji

Integracja hostingu Redis automatycznie dodaje monitorowanie stanu dla odpowiedniego typu zasobu. Kontrola kondycji sprawdza, czy serwer jest uruchomiony i czy można nawiązać z nim połączenie.

Integracja hostingu opiera się na pakiecie NuGet AspNetCore.HealthChecks 📦Redis.

integracja Client

Aby rozpocząć integrację z klientem buforowania wyjściowego .NET Aspire Stack Exchange Redis, zainstaluj 📦Aspire.StackExchange.Redis.OutputCaching pakiet NuGet w projekcie korzystającym z klienta, czyli w projekcie aplikacji używającej klienta buforowania wyjściowego. Integracja klienta buforowania wyjściowego Redis rejestruje usługi niezbędne do włączenia wywołań metod przez CacheOutput oraz użycia atrybutu [OutputCache], które bazują na Redis jako mechanizmie buforowania.

dotnet add package Aspire.StackExchange.Redis.OutputCaching

Dodawanie buforowania danych wyjściowych

W pliku Program.cs projektu korzystającego z klienta wywołaj metodę rozszerzenia AddRedisOutputCache na dowolnym IHostApplicationBuilder, aby zarejestrować wymagane usługi na potrzeby buforowania danych wyjściowych.

builder.AddRedisOutputCache(connectionName: "cache");

Napiwek

Parametr connectionName musi być zgodny z nazwą używaną podczas dodawania zasobu Redis w projekcie hosta aplikacji. Aby uzyskać więcej informacji, zobacz Dodaj zasób Redis.

Napiwek

Parametr connectionName musi być zgodny z nazwą używaną podczas dodawania zasobu Garnet w projekcie hosta aplikacji. Aby uzyskać więcej informacji, zobacz Dodawanie zasobu Garnet.

Napiwek

Parametr connectionName musi być zgodny z nazwą używaną podczas dodawania zasobu Valkey w projekcie hosta aplikacji. Aby uzyskać więcej informacji, zobacz Dodawanie zasobu Valkey.

Dodaj międzyoprogramowanie do potoku przetwarzania żądań, wywołując UseOutputCache(IApplicationBuilder):

var app = builder.Build();

app.UseOutputCache();

W przypadku minimalnych aplikacji interfejsu APIskonfiguruj punkt końcowy do buforowania, wywołując CacheOutputlub stosując OutputCacheAttribute, jak pokazano w poniższych przykładach:

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

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

W przypadku aplikacji z kontrolerami zastosuj atrybut [OutputCache] do metody akcji. W przypadku aplikacji Razor Pages zastosuj atrybut do klasy Razor page.

Konfiguracja

Integracja buforowania wyjściowego w .NET Aspire Stack Exchange Redis oferuje wiele opcji konfigurowania połączenia Redis w oparciu o wymagania i konwencje twojego projektu.

Użycie ciągu połączenia

W przypadku używania parametrów połączenia z sekcji konfiguracji ConnectionStrings można podać nazwę parametrów połączenia podczas wywoływania AddRedisOutputCache:

builder.AddRedisOutputCache(connectionName: "cache");

Następnie parametry połączenia zostaną pobrane z sekcji konfiguracji ConnectionStrings:

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

Aby uzyskać więcej informacji na temat formatowania tego łańcucha połączenia, zobacz dokumentację konfiguracji Stack Exchange .

Korzystanie z dostawców konfiguracji

Integracja buforowania danych wyjściowych .NET Aspire Stack Exchange Redis obsługuje Microsoft.Extensions.Configuration. Ładuje StackExchangeRedisSettings z konfiguracji za pomocą klucza Aspire:StackExchange:Redis. Przykład appsettings.json, który konfiguruje niektóre opcje:

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

Aby uzyskać pełny schemat integracji klienta z buforowaniem wyjściowym Redis, zobacz JSON.

Użyj delegatów wbudowanych

Możesz również przekazać delegata Action<StackExchangeRedisSettings> configurationSettings, aby skonfigurować niektóre lub wszystkie opcje wbudowane, na przykład w celu wyłączenia kontroli kondycji z kodu:

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

Można skonfigurować ConfigurationOptions również przy użyciu parametru delegata Action<ConfigurationOptions> configureOptions metody AddRedisOutputCache. Na przykład aby ustawić limit czasu połączenia:

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

Client kontrole stanu integracji

Domyślnie .NET.NET Aspireintegracje klienta mają kontrole stanu włączone dla wszystkich usług. Podobnie wiele .NET.NET Aspireintegracji hostingowych również umożliwia punkty końcowe sprawdzania kondycji. Aby uzyskać więcej informacji, zobacz:

Integracja buforowania wyjściowego .NET Aspire Stack Exchange Redis obsługuje następujące elementy:

  • Dodaje sprawdzenie kondycji, gdy StackExchangeRedisSettings.DisableHealthChecks jest false, próbujące nawiązać połączenie z instancją kontenera.
  • Integruje się z /health punktem końcowym HTTP, który określa, że wszystkie zarejestrowane kontrole kondycji muszą być pomyślnie przeprowadzone, aby aplikacja została uznana za gotową do akceptowania ruchu.

Obserwowanie i telemetria

.NET .NET Aspire integracje automatycznie konfigurują rejestrowanie, śledzenie i metryki, które są czasami nazywane filarami obserwowalności. Aby uzyskać więcej informacji na temat możliwości obserwacji integracji i telemetrii, zobacz omówienie integracji .NET.NET Aspire. W zależności od usługi pomocniczej niektóre integracje mogą obsługiwać tylko niektóre z tych funkcji. Na przykład niektóre integracje obsługują rejestrowanie i śledzenie, ale nie metryki. Funkcje telemetrii można również wyłączyć przy użyciu technik przedstawionych w sekcji konfiguracji .

Rejestrowanie

Integracja buforowania danych wyjściowych .NET Aspire Stack Exchange Redis korzysta z następujących kategorii dzienników:

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

Śledzenie

Integracja buforowania wyjściowego .NET Aspire Stack Exchange z Redis wygeneruje następujące działania śledzenia za pomocą OpenTelemetry.

  • OpenTelemetry.Instrumentation.StackExchangeRedis

Wskaźniki

Domyślnie integracja buforowania danych wyjściowych .NET Aspire Stack Exchange Redis nie obsługuje metryk z powodu ograniczeń biblioteki StackExchange.Redis.

Zobacz też

*: Redis jest zastrzeżonym znakiem towarowym Redis Ltd. Wszelkie prawa, które istnieją, są zastrzeżone do Redis Ltd. Każde użycie przez firmę Microsoft jest przeznaczone tylko do celów referentalnych i nie wskazuje żadnych sponsorów, poparcia ani przynależności między Redis a firmą Microsoft. powrócić do góry?