web-dev-qa-db-fra.com

Utilisation de StackExchange.Redis dans un contrôleur ASP.NET Core

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?

6
Naarkie

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.

7
Naarkie

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;
    }
}
8
Trey Dibler

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)
0
Ondrej Rozinek