Несколько типов распределенного кэша в ASP.NET Core - PullRequest
0 голосов
/ 28 августа 2018

Предположим, у меня есть приложение ASP.NET Core 2.x.

Я бы хотел использовать Redis для стандартного внедрения зависимостей IDistributedCache, но использовать распределенный кэш SQL Server в качестве поддержки промежуточного программного обеспечения сеанса.

Возможно ли это? Если да, как бы вы настроили это в Startup.cs?

1 Ответ

0 голосов
/ 28 августа 2018

Распределенное хранилище состояний сеанса внедряет экземпляр IDistributedCache по умолчанию. Это означает, что вы должны настроить распределенный кэш SQL Server в качестве кэша по умолчанию, если хотите использовать его для состояния сеанса.

Для ваших собственных целей кэширования вы можете создать «интерфейс-обертку», который конкретно представляет кэш Redis (например, IRedisCache), зарегистрировать его и внедрить его в ваше промежуточное ПО / контроллеры / службы. Например:

public interface IRedisDistributedCache : IDistributedCache
{
}

public void ConfigureServices(IServiceCollection services)
{
    // Add Redis caching
    services.AddDistributedRedisCache();
    services.AddSingleton<IRedisDistributedCache, RedisCache>();

    // Add SQL Server caching as the default cache mechanism
    services.AddDistributedSqlServerCache();
}

public class FooController : Controller
{
    private readonly IRedisDistributedCache _redisCache;

    public FooController(IRedisDistributedCache redisCache)
    {
        _redisCache = redisCache;
    }
}
...