Partager via


® intégration de la mise en cache de sortie .NET AspireRedis*

inclut :intégration d’hébergement et Client intégration

Découvrez comment utiliser l’intégration de mise en cache de sortie .NET AspireRedis. L'intégration Aspire.StackExchange.Redis.OutputCachingclient est utilisée pour enregistrer un fournisseur de mise en cache de sortie ASP.NET Core, soutenu par un Redisserver, avec l'image de conteneur docker.io/library/redis.

Découvrez comment utiliser l’intégration de mise en cache de sortie .NET AspireRedis. L’intégration Aspire.StackExchange.Redis.OutputCachingclient est utilisée pour inscrire un fournisseur ASP.NET Core de mise en cache de sortie soutenu par un Garnetserver avec l’image de conteneur ghcr.io/microsoft/garnet.

Découvrez comment utiliser l’intégration de mise en cache de sortie .NET AspireRedis. L'intégration Aspire.StackExchange.Redis.OutputCachingclient est utilisée pour inscrire un fournisseur de mise en cache de sortie ASP.NET Core, soutenu par un Valkey server, avec l'image conteneur docker.io/valkey/valkey.

Intégration de l’hébergement

Le Redis hébergeant des modèles d’intégration d’une ressource Redis comme type de RedisResource. Pour accéder à ce type et aux API qui vous permettent de l’ajouter à votre package NuGet 📦Aspire.HostingRedis dans le projet hôte de l’application .

dotnet add package Aspire.Hosting.Redis

Pour plus d'informations, consultez dotnet add package ou gérer les dépendances de package dans les applications .NET.

Ajouter Redis ressource

Dans votre projet hôte d’application, appelez AddRedis sur l’instance de builder pour ajouter une ressource Redis :

var builder = DistributedApplication.CreateBuilder(args);

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

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

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

Lorsque .NET.NET Aspire ajoute une image conteneur à l’hôte de l’application, comme illustré dans l’exemple précédent avec l’image docker.io/Redis/Redis, il crée une instance de Redis sur votre ordinateur local. Une référence à votre ressource Redis (la variable cache) est ajoutée au ExampleProject.

La méthode WithReference configure une connexion dans le ExampleProject nommé "cache". Pour plus d’informations, consultez cycle de vie des ressources de conteneur.

Pourboire

Si vous préférez vous connecter à une instance de Redis existante, appelez AddConnectionString à la place. Pour plus d’informations, consultez Référencer les ressources existantes.

Ajouter une ressource Redis avec Redis Insights

Pour ajouter Redis Insights à la ressource Redis, appelez la méthode 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 est une interface graphique gratuite permettant d’analyser Redis données sur tous les systèmes d’exploitation et les déploiements Redis avec l’aide de notre assistant IA, Redis Copilot. .NET .NET Aspire ajoute une autre image conteneur docker.io/redis/redisinsight à l’hôte de l’application, qui exécute l'application Commander.

Note

Pour configurer le port hôte de la chaîne RedisInsightResource un appel à l’API WithHostPort et fournir le numéro de port souhaité.

Ajouter la ressource Redis avec le Commandant Redis

Pour ajouter le commandant à la ressource , appelez la méthode :

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 est une application web Node.js utilisée pour afficher, modifier et gérer une base de données Redis. .NET .NET Aspire ajoute une autre image conteneur docker.io/rediscommander/redis-commander à l'hôte de l'application qui exécute l'application Commander.

Pourboire

Pour configurer le port hôte de la chaîne RedisCommanderResource un appel à l’API WithHostPort et fournir le numéro de port souhaité.

Ajouter la ressource Redis avec un volume de données

Pour ajouter un volume de données à la ressource Redis, appelez la méthode WithDataVolume sur la ressource 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...

Le volume de données est utilisé pour conserver les données Redis en dehors du cycle de vie de son conteneur. Le volume de données est monté sur le chemin /data dans le conteneur Redis et lorsqu'un paramètre name n'est pas fourni, le nom est généré de manière aléatoire. Pour plus d'informations sur les volumes de données et la raison pour laquelle ils sont préférés aux montages de liaison , consultez la documentation Docker : Volumes.

Ajouter la ressource Redis avec montage lié de données

Pour ajouter un montage de liaison de données à la ressource Redis, appelez la méthode 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...

Important

Les montages de liaison de données ont des fonctionnalités limitées par rapport aux volumes , qui offrent de meilleures performances, portabilité et sécurité, les rendant ainsi plus adaptés aux environnements de production. Toutefois, les montages de liaison autorisent l’accès direct et la modification des fichiers sur le système hôte, idéal pour le développement et les tests dans les cas où des modifications en temps réel sont nécessaires.

Les montages de liaison de données s’appuient sur le système de fichiers de l’ordinateur hôte pour conserver les données Redis entre les redémarrages de conteneur. Le montage de liaison de données est monté au chemin d'accès C:\Redis\Data sur Windows (ou /Redis/Data sur Unix) de l'ordinateur hôte, dans le conteneur Redis. Pour plus d’informations sur les montages de liaison de données, consultez Docker docs : Liaison de montages.

Ajouter la ressource Redis avec persistance

Pour ajouter la persistance à la ressource Redis, appelez la méthode WithPersistence avec le volume de données ou le montage de liaison de données :

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

Le code précédent ajoute la persistance à la ressource Redis en prenant des instantanés des données Redis à un intervalle et un seuil spécifiés. Le interval est le temps entre les exportations d’instantanés et l'keysChangedThreshold correspond au nombre d’opérations de modification clés requises pour déclencher un instantané. Pour plus d’informations sur la persistance, consultez Redis docs : Persistance.

L'intégration d'hébergement de Garnet modélise une ressource Garnet en tant que type de GarnetResource. Pour accéder à ce type et à ces API qui vous permettent de l’ajouter à votre 📦Aspire. Hosting.Garnet package NuGet dans le projet hôte d’application .

dotnet add package Aspire.Hosting.Garnet

Pour plus d'informations, consultez dotnet add package ou Gérer les dépendances des packages dans les applications .NET.

Ajouter une ressource garnet

Dans votre projet hôte d’application, appelez AddGarnet sur l’instance de builder pour ajouter une ressource Garnet :

var builder = DistributedApplication.CreateBuilder(args);

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

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

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

Lorsque .NET.NET Aspire ajoute une image conteneur à l’hôte de l’application, comme illustré dans l’exemple précédent avec l’image ghcr.io/microsoft/garnet, il crée une instance garnet sur votre ordinateur local. Une référence à votre ressource Garnet (la variable cache) est ajoutée au ExampleProject.

La méthode WithReference configure une connexion dans le ExampleProject nommé "cache". Pour plus d'informations, consultez cycle de vie des ressources du conteneur.

Pourboire

Si vous préférez vous connecter à une instance garnet existante, appelez AddConnectionString à la place. Pour plus d’informations, consultez Référencer les ressources existantes.

Ajouter une ressource Garnet avec un volume de données

Pour ajouter un volume de données à la ressource Garnet, appelez la méthode AddGarnet sur la ressource 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...

Le volume de données est utilisé pour conserver les données garnet en dehors du cycle de vie de son conteneur. Le volume de données est monté sur le chemin d’accès /data dans le conteneur Garnet et lorsqu’un paramètre name n’est pas fourni, le nom est généré au hasard. Pour plus d’informations sur les volumes de données et sur la raison pour laquelle ils sont préférés par rapport aux montages de liaison , consultez Docker documentation : Volumes.

Ajouter une ressource Garnet avec montage de lien de données

Pour ajouter un montage de liaison de données à la ressource Garnet, appelez la méthode 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...

Important

Les montages de liaison de données ont des fonctionnalités limitées par rapport aux volumes , lesquels offrent de meilleures performances, une meilleure portabilité et une meilleure sécurité, les rendant plus adaptés aux environnements de production. Toutefois, les montages de liaison permettent un accès direct et la modification des fichiers sur le système hôte, ce qui est idéal pour le développement et les tests nécessitant des modifications en temps réel.

Les montages de liaison de données s’appuient sur le système de fichiers de l’ordinateur hôte pour conserver les données garnet entre les redémarrages de conteneur. Le montage de liaison de données est monté dans le conteneur Garnet à l'emplacement C:\Garnet\Data sur Windows (ou au chemin d'accès /Garnet/Data sur Unix) de l'ordinateur hôte. Pour plus d’informations sur les montages de liaison de données, consultez Docker docs : Liaison de montages.

Ajouter une ressource Garnet avec persistance

Pour ajouter la persistance à la ressource Garnet, appelez la méthode WithPersistence avec le volume de données ou le montage de liaison de données :

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

Le code précédent ajoute la persistance à la ressource Redis en prenant des captures instantanées des données garnet à un intervalle et un seuil spécifiés. Le interval est le temps entre les exportations d’instantanés et l'keysChangedThreshold correspond au nombre d’opérations de modification clés requises pour déclencher un instantané. Pour plus d’informations sur la persistance, consultez Redis docs : Persistance.

L’hébergement Valkey modélise une ressource Valkey comme type ValkeyResource. Pour accéder à ce type et à ces API qui vous permettent de l’ajouter à votre . Hosting.Valkey package NuGet dans le projet hôte de l’application .

dotnet add package Aspire.Hosting.Valkey

Pour plus d’informations, consultez dotnet add package ou Gérer les dépendances de packages dans les applications .NET.

Ajouter une ressource Valkey

Dans votre projet hôte d’application, appelez AddValkey sur l’instance de builder pour ajouter une ressource Valkey :

var builder = DistributedApplication.CreateBuilder(args);

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

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

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

Lorsque .NET.NET Aspire ajoute une image conteneur à l’hôte de l’application, comme illustré dans l’exemple précédent avec l’image docker.io/valkey/valkey, il crée une instance Valkey sur votre ordinateur local. Une référence à votre ressource Valkey (la variable cache) est ajoutée au ExampleProject.

La méthode WithReference configure une connexion dans le ExampleProject nommé "cache". Pour plus d’informations, consultez le cycle de vie des ressources de conteneur.

Pourboire

Si vous préférez vous connecter à une instance Valkey existante, appelez AddConnectionString à la place. Pour plus d’informations, consultez Référencer les ressources existantes.

Ajouter une ressource Valkey avec un volume de données

Pour ajouter un volume de données à la ressource Valkey, appelez la méthode AddValkey sur la ressource 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...

Le volume de données est utilisé pour conserver les données Valkey en dehors du cycle de vie de son conteneur. Le volume de données est monté sur le chemin d’accès /data dans le conteneur Valkey et lorsqu’un paramètre name n’est pas fourni, le nom est généré au hasard. Pour plus d’informations sur les volumes de données et sur la raison pour laquelle ils sont préférés par rapport aux montages de liaison , consultez Docker documentation : Volumes.

Ajouter une ressource Valkey avec monture de liaison de données.

Pour ajouter un montage de liaison de données à la ressource Valkey, appelez la méthode 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...

Important

Les montages de liaison de données ont des fonctionnalités limitées par rapport aux volumes , lesquels offrent de meilleures performances, une meilleure portabilité et sécurité, ce qui les rend plus adaptés aux environnements de production. Toutefois, les montages de liaison autorisent l’accès direct et la modification des fichiers sur le système hôte, idéal pour le développement et le test où les modifications en temps réel sont nécessaires.

Les montages de liaison de données s’appuient sur le système de fichiers de la machine hôte pour conserver les données Valkey lors des redémarrages des conteneurs. Dans le conteneur Valkey, le montage de liaison de données est monté au chemin C:\Valkey\Data sur Windows (ou /Valkey/Data sur Unix) sur l’ordinateur hôte. Pour plus d'informations sur les montages de liaison de données, consultez Docker dans la documentation : montages de liaison.

Ajouter une ressource Valkey avec persistance

Pour ajouter la persistance à la ressource Valkey, appelez la méthode WithPersistence avec le volume de données ou le montage de liaison de données :

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

Le code précédent ajoute la persistance à la ressource Redis en prenant des captures instantanées des données Valkey à un intervalle et un seuil spécifiés. Le interval est le temps entre les exportations d’instantanés et l'keysChangedThreshold correspond au nombre d’opérations de modification clés requises pour déclencher un instantané. Pour plus d’informations sur la persistance, consultez Redis docs : Persistance.

Vérifications de l'intégrité de l'hébergement intégré

L’intégration d’hébergement Redis ajoute automatiquement un contrôle d’intégrité pour le type de ressource approprié. La vérification d’intégrité vérifie que le server est en cours d’exécution et qu’une connexion peut être établie à celui-ci.

L’intégration de l’hébergement s’appuie sur les 📦 AspNetCore.HealthChecks.Redis paquet NuGet.

intégration de Client

Pour commencer à utiliser la mise en cache Redis de sortie .NET Aspire Stack Exchange client intégration, installez la 📦Aspire. StackExchange.Redis. OutputCaching package NuGet dans le projet clientconsommant, autrement dit, le projet pour l’application qui utilise la mise en cache de sortie client.

dotnet add package Aspire.StackExchange.Redis.OutputCaching

Ajouter la mise en cache de sortie

Dans le fichier Program.cs de votre projet qui consomme client, appelez la méthode d'extension AddRedisOutputCache sur n’importe quel IHostApplicationBuilder pour enregistrer les services requis pour la mise en cache de sortie.

builder.AddRedisOutputCache(connectionName: "cache");

Pourboire

Le paramètre connectionName doit correspondre au nom utilisé lors de l’ajout de la ressource Redis dans le projet hôte de l’application. Pour plus d’informations, consultez Ajouter Redis ressource.

Pourboire

Le paramètre connectionName doit correspondre au nom utilisé lors de l’ajout de la ressource Garnet dans le projet hôte de l’application. Pour plus d’informations, consultez Ajouter une ressource Garnet.

Pourboire

Le paramètre connectionName doit correspondre au nom utilisé lors de l’ajout de la ressource Valkey dans le projet hôte de l’application. Pour plus d’informations, consultez Ajouter une ressource Valkey.

Ajoutez le middleware au pipeline de traitement des demandes en appelant UseOutputCache(IApplicationBuilder):

var app = builder.Build();

app.UseOutputCache();

Pour applications API minimales, configurez un point de terminaison pour effectuer la mise en cache en appelant CacheOutput, ou en appliquant le OutputCacheAttribute, comme illustré dans les exemples suivants :

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

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

Pour les applications avec des contrôleurs, appliquez l’attribut [OutputCache] à la méthode d’action. Pour les applications Razor Pages, appliquez l’attribut à la classe de page Razor.

Paramétrage

L’intégration de mise en cache de sortie .NET Aspire Stack Exchange Redis fournit plusieurs options pour configurer la connexion Redis en fonction des exigences et des conventions de votre projet.

Utiliser une chaîne de connexion

Lorsque vous utilisez une chaîne de connexion à partir de la section de configuration ConnectionStrings, vous pouvez fournir le nom de la chaîne de connexion lors de l’appel de AddRedisOutputCache:

builder.AddRedisOutputCache(connectionName: "cache");

Ensuite, la chaîne de connexion est récupérée à partir de la section de configuration ConnectionStrings :

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

Pour plus d’informations sur la mise en forme de cette chaîne de connexion, consultez la documentation de configuration RedisStack Exchange.

Utiliser des fournisseurs de configuration

L’intégration .NET Aspire Stack Exchange Redis prend en charge Microsoft.Extensions.Configuration. Il charge le StackExchangeRedisSettings depuis configuration en utilisant la clé Aspire:StackExchange:Redis. Exemple appsettings.json qui configure certaines des options suivantes :

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

Pour obtenir le schéma complet Redisclient d’intégration JSON, consultez Aspire. StackExchange.Redis/ConfigurationSchema.json.

Utiliser des délégués en ligne

Vous pouvez également transmettre le délégué Action<StackExchangeRedisSettings> configurationSettings pour configurer certaines ou toutes les options en ligne, par exemple pour désactiver les contrôles de santé directement dans le code :

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

Vous pouvez également configurer le ConfigurationOptions à l’aide du paramètre délégué de la méthode . Par exemple, pour définir le délai d’expiration de la connexion :

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

Vérifications d’intégrité

Par défaut, les intégrations .NET.NET Aspire permettent les contrôles de santé pour tous les services. Pour plus d’informations, consultez .NET.NET Aspire vue d’ensemble des intégrations.

L’intégration de la mise en cache de sortie .NET AspireRedis Stack Exchange Redis gère les opérations suivantes :

  • Ajoute le contrôle de santé StackExchange.Redis, tente d’ouvrir la connexion et lève une exception lorsqu'elle échoue.
  • S’intègre au point de terminaison HTTP /health, qui spécifie que toutes les vérifications d’intégrité inscrites doivent passer pour que l’application soit considérée comme prête à accepter le trafic.

Observabilité et télémétrie

.NET .NET Aspire intégrations configurent automatiquement les paramètres de journalisation, de suivi et de métriques, appelés parfois les piliers de l’observabilité. Pour plus d’informations sur l’observabilité de l’intégration et la télémétrie, consultez .NET.NET Aspire vue d’ensemble des intégrations. Selon le service de stockage, certaines intégrations peuvent uniquement prendre en charge certaines de ces fonctionnalités. Par exemple, certaines intégrations prennent en charge la journalisation et le suivi, mais pas les métriques. Les fonctionnalités de télémétrie peuvent également être désactivées à l’aide des techniques présentées dans la section Configuration.

Exploitation forestière

L’intégration de mise en cache de sortie .NET Aspire Stack Exchange Redis utilise les catégories de journaux suivantes :

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

Traçage

L’intégration de la mise en cache de sortie Redis Stack Exchange .NET Aspire émet les activités de suivi suivantes à l’aide de OpenTelemetry:

  • OpenTelemetry.Instrumentation.StackExchangeRedis

Métriques

L’intégration de mise en cache de sortie .NET Aspire Stack Exchange Redis ne prend actuellement pas en charge les métriques par défaut en raison de limitations avec la bibliothèque StackExchange.Redis.

intégration d’hébergement AzureRedis

Pour déployer vos ressources Redis sur Azure, installez le package NuGet 📦Aspire.Hosting.Azure.Redis :

dotnet add package Aspire.Hosting.Azure.Redis

Ajouter une ressource Azure Cache for Redisserver

Une fois que vous avez installé le package .NET Aspire d’hébergement AzureRedis, appelez la méthode d’extension AddAzureRedis dans votre projet hôte d’application :

var builder = DistributedApplication.CreateBuilder(args);

var cache = builder.AddAzureRedis("azcache")

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

L’appel précédent à AddAzureRedis configure la ressource Redisserver pour être déployée en tant que Azure Cache for Redis.

Important

Par défaut, AddAzureRedis configure l’authentification Microsoft Entra ID. Cela nécessite des modifications des applications qui doivent se connecter à ces ressources, par exemple des intégrations client.

Ajouter la sortie de Azure Cache for Redisclient

Par défaut, lorsque vous appelez AddAzureRedis dans votre intégration d’hébergement Redis, il configure 📦 Microsoft.Azure. StackExchangeRedis package NuGet pour activer l’authentification :

dotnet add package Microsoft.Azure.StackExchangeRedis

La connexion Redis peut être consommée à l’aide de l’intégration client et de Microsoft.Azure.StackExchangeRedis. Tenez compte du code de configuration suivant :

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

Pour plus d’informations, consultez le dépôt Microsoft.Azure.StackExchangeRedis.

Voir aussi

*: Redis est une marque déposée de Redis Ltd. Tous les droits qu’il contient sont réservés à Redis Ltd. Toute utilisation par Microsoft est destinée à des fins référentielles uniquement et n’indique pas de parrainage, d’approbation ou d’affiliation entre Redis et Microsoft. Revenir au premier?