® intégration de la mise en cache distribuée .NET AspireRedis*
inclut :,,intégration d’hébergement, et Client intégration
Découvrez comment utiliser l’intégration de mise en cache distribuée .NET AspireRedis. La bibliothèque Aspire.StackExchange.Redis.DistributedCaching
est utilisée pour enregistrer un fournisseur IDistributedCache soutenu par un Redisserver avec l'image de conteneur docker.io/library/redis
.
Découvrez comment utiliser l’intégration de mise en cache distribuée .NET AspireRedis. La bibliothèque Aspire.StackExchange.Redis.DistributedCaching
est utilisée pour inscrire un fournisseur IDistributedCache reposant sur un Garnetserver avec l'image conteneur ghcr.io/microsoft/garnet
.
Découvrez comment utiliser l’intégration de mise en cache distribuée .NET AspireRedis. La bibliothèque Aspire.StackExchange.Redis.DistributedCaching
est utilisée pour enregistrer un fournisseur IDistributedCache soutenu par un Valkeyserver avec l'image de conteneur docker.io/valkey/valkey
.
Intégration de l’hébergement
L'intégration d'hébergement Redis modélise une ressource Redis en tant que type RedisResource. Pour accéder à ce type et aux API vous permettant de l’ajouter à votre 📦Aspire.Hébergement.Redis package NuGet 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 paquet 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 le cycle de vie des ressources des conteneurs .
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 Redis ressource 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
sur l'hôte de l'application qui exécute l'application de commande.
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 Redis ressource avec Redis Commander
Pour ajouter le commandant Redis à la ressource Redis, appelez la méthode 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 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 image de conteneur supplémentaire docker.io/rediscommander/redis-commander
à l’hôte d’application qui exécute l’application de commande.
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é aléatoirement. Pour plus d’informations sur les volumes de données et sur la raison pour laquelle ils sont préférés aux montages de liaison , consultez la documentation Docker : Volumes.
Ajouter la ressource Redis avec un montage de liaison 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 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 qui nécessitent des modifications en temps réel.
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 Redis lors des redémarrages des conteneurs. Le montage de liaison de données est monté sur le chemin d’accès C:\Redis\Data
sur Windows (ou /Redis/Data
sur Unix) sur l’ordinateur hôte dans le conteneur Redis. Pour plus d’informations sur les montages de liaison de données, consultez les documents Docker : montages de liaison.
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 comme le type de GarnetResource. Pour accéder à ce type et aux API qui vous permettent de l’ajouter à votre package NuGet 📦Aspire.Hosting.Garnet dans le projet hôte de l'application .
dotnet add package Aspire.Hosting.Garnet
Pour plus d’informations, consultez dotnet add package ou Gérer les dépendances de package dans les .NET applications.
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 de 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 pourquoi ils sont préférés par rapport aux montages de liaison , consultez la documentation Docker : Volumes.
Ajouter une ressource Garnet avec montage de liaison 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 , qui offrent de meilleures performances, plus de portabilité et une sécurité accrue, 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 l'ordinateur hôte pour conserver les données Garnet entre les redémarrages de conteneurs. Le montage de liaison de données est monté sur C:\Garnet\Data
sous Windows (ou sur /Garnet/Data
sous Unix) sur l’ordinateur hôte dans le conteneur Garnet. 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 par 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 aux API qui vous permettent de l’ajouter à votre package NuGet 📦Aspire. Hosting.Valkey dans le projet hôte d'applications .
dotnet add package Aspire.Hosting.Valkey
Pour plus d’informations, consultez dotnet add package ou Gérer les dépendances de package 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 /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 montage 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 , offrant de meilleures performances, plus de portabilité et de 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 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 Valkey lors des redémarrages des conteneurs. La liaison de données est montée sur le chemin d’accès C:\Valkey\Data
sur Windows (ou /Valkey/Data
sur Unix) sur l’ordinateur hôte dans le conteneur Valkey. Pour plus d’informations sur les montages de liaison de données, consultez Docker docs : Liaison de montages.
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 d’intégrité de l’intégration d’hébergement
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 📦 et le paquet NuGetRedis.
intégration de Client
Pour commencer à utiliser l’intégration de mise en cache distribuée .NET AspireRedis, installez le package 📦Aspire.StackExchange.Redis.DistributedCaching NuGet dans le projet clientconsommateur, c’est-à-dire le projet pour l’application qui utilise la mise en cache distribuée Redisclient.
dotnet add package Aspire.StackExchange.Redis.DistributedCaching
Ajouter Redisclient
Dans le fichier Program.cs de votre projet clientconsommant, appelez l’extension AddRedisDistributedCache pour inscrire les services requis pour la mise en cache distribuée et ajouter un IDistributedCache à utiliser via le conteneur d’injection de dépendances.
builder.AddRedisDistributedCache(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.
Vous pouvez ensuite récupérer l’instance IDistributedCache
à l’aide de l’injection de dépendances. Par exemple, pour récupérer le cache à partir d’un service :
public class ExampleService(IDistributedCache cache)
{
// Use cache...
}
Pour plus d’informations sur l’injection de dépendances, consultez .NET injection de dépendances.
Ajouter des Redisclient à clé
Il peut arriver que vous souhaitiez inscrire plusieurs instances de IDistributedCache
avec différents noms de connexion. Pour inscrire des clients Redis, utilisez la méthode AddKeyedRedisDistributedCache :
builder.AddKeyedRedisDistributedCache(name: "chat");
builder.AddKeyedRedisDistributedCache(name: "product");
Vous pouvez ensuite récupérer les instances IDistributedCache
à l’aide de l’injection de dépendances. Par exemple, pour récupérer la connexion à partir d’un exemple de service :
public class ExampleService(
[FromKeyedServices("chat")] IDistributedCache chatCache,
[FromKeyedServices("product")] IDistributedCache productCache)
{
// Use caches...
}
Pour plus d’informations sur les services à clé, consultez .NET injection de dépendances : services à clé.
Configuration
L’intégration de la mise en cache distribuée .NET AspireRedis 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 builder.AddRedisDistributedCache
:
builder.AddRedisDistributedCache("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 à partir de la configuration à l’aide de 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>
pour configurer certaines ou toutes les options en ligne, par exemple pour configurer DisableTracing
:
builder.AddRedisDistributedCache(
"cache",
settings => settings.DisableTracing = true);
Vous pouvez également configurer le ConfigurationOptions à l’aide du paramètre délégué Action<ConfigurationOptions> configureOptions
de la méthode AddRedisDistributedCache
. Par exemple, pour définir le délai d’expiration de la connexion :
builder.AddRedisDistributedCache(
"cache",
static settings => settings.ConnectTimeout = 3_000);
Vérifications d’intégrité
Par défaut, les intégrations .NET.NET Aspire activent les vérifications de l'état 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 distribuée .NET AspireRedis gère les opérations suivantes :
- Ajoute le contrôle d'intégrité
StackExchange.Redis
, tente d'ouvrir la connexion et génère une exception en cas d'échec. - S’intègre au point de terminaison HTTP
/health
, qui spécifie que toutes les vérifications de santé enregistrées doivent être réussies pour que l’application soit considérée comme prête à accepter le trafic.
Observabilité et télémétrie
Les intégrations automatiques .NET.NET Aspire mettent en place la journalisation, le traçage et les mesures, parfois appelés 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 la mise en cache distribuée .NET AspireRedis utilise les catégories de journaux de logs suivantes :
Aspire.StackExchange.Redis
Microsoft.Extensions.Caching.StackExchangeRedis
Traçage
L’intégration de la mise en cache distribuée .NET AspireRedis émet les activités de suivi suivantes à l’aide de OpenTelemetry:
OpenTelemetry.Instrumentation.StackExchangeRedis
Métriques
L’intégration de la mise en cache distribuée .NET AspireRedis 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 📦Aspire. Hébergement.Azure.Redis package NuGet :
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 pour les intégrations client.
Ajouter Azure Cache for Redis distribué à client
Par défaut, lorsque vous appelez AddAzureRedis
dans votre intégration d'hébergement Redis, il configure le paquet NuGet 📦 Microsoft.AzureStackExchangeRedis 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.AddRedisDistributedCache("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?