J'aimerais utiliser des fonctionnalités Redis telles que les champs de bits et les champs de hachage à partir d'un contrôleur MVC. Je comprends qu’il ya dans le support de mise en cache intégré dans le noyau ASP.NET, mais cela ne prend en charge que les commandes GET et SET de base, pas les commandes dont j’ai besoin dans mon application. Je sais comment utiliser StackExchange.Redis depuis une application normale (par exemple, une console), mais je ne sais pas comment le configurer dans un site ASP.
Où dois-je placer tout le code d'initialisation de la connexion pour pouvoir y accéder ensuite à partir d'un contrôleur? Est-ce quelque chose que j'utiliserais pour l'injection de dépendance?
Ce blog a écrit un article (avec accompagnement repo de code complet ) sur l’implémentation d’un service Redis dans ASP.NET Core. Il dispose d'un service standard qui sérialise automatiquement les classes POCO dans un hachage redis.
Dans la méthode ConfigureServices de votre classe de démarrage, vous voudrez ajouter
services.AddSingleton<IConnectionMultiplexer>(ConnectionMultiplexer.Connect("yourConnectionString"));
Vous pouvez ensuite utiliser l'injection de dépendance en modifiant votre signature de constructeur comme suit:
public YourController : Controller
{
private IConnectionMultiplexer _connectionMultiplexer;
public YourController(IConnectionMultiplexer multiplexer)
{
this._connectionMultiplexer = multiplexer;
}
}
Le moyen le plus simple est d'installer le paquet Nuget
Install-Package Microsoft.Extensions.Caching.Redis
dans votre ASP projet MVC .NET Core.
Configurez ensuite le service avec injection de dépendance dans votre classe Startup dans la méthode ConfigureServices:
services.AddDistributedRedisCache(option =>
{
option.Configuration = Configuration["AzureCache:ConnectionString"];
option.InstanceName = "master";
});
Ajoutez la chaîne de connexion de liaison dans le fichier appsettings.json pour le déploiement de la version, comme suit:
"AzureCache": {
"ConnectionString": ""
}
Si vous utilisez Azure, ajoutez le nom du paramètre d'application dans les paramètres d'application pour votre ASP MVC .NET App Core Service .NET afin de se lier au moment de l'exécution du côté Azure après le déploiement. La chaîne de connexion pour la production ne doit pas figurer dans votre code pour des raisons de sécurité.
Chaîne de connexion de liaison Azure
Ajouter la liaison pour par exemple développement appsettings.Development.json
"AzureCache": {
"ConnectionString": "<your connection string>"
}
Injectez le service à votre contrôleur dans le constructeur:
public class SomeController : Controller
{
public SomeController(IDistributedCache distributedCache)