У меня есть ASP.Net Core 2.1
приложение. Необходимо использовать RedisCache
в качестве кэша.
Вот как выглядят мои методы для добавления элемента в кэш.
public class RedisCache : ICache<Customer> //custom interface
{
#region Private
private readonly IConfiguration _configuration;
private readonly IDatabase _cache;
private readonly ConnectionMultiplexer _connection;
private readonly IRedisTypedClient<Customer> _redisClient;
#endregion Private
#region Ctor
public RedisCache(IConfiguration configuration, IRedisTypedClient<Customer> redisClient)
{
_configuration = configuration;
_connection = ConnectionMultiplexer.Connect(configuration.GetSection("AWS:Cache")["Redis:Server"]);
_cache = _connection.GetDatabase();
_redisClient = redisClient;
}
#endregion Ctor
public async Task<Customer> AddItem(Customer item)
{
try
{
await Task.Run(() => _redisClient.GetAndSetValue(item.Id, item)).ConfigureAwait(false);
return item;
}
catch (Exception ex)
{
Logger.Log(ex, item);
return null;
}
}
}
Регистрация зависимостей
services.AddScoped<IRedisTypedClient<Customer>>(); //DI Registration
Когдаприложение запускается, выдает ошибку
Невозможно разрешить службу для типа 'ServiceStack.Redis.Generic.IRedisTypedClient
Поэтому попытался зарегистрировать DI как
services.AddScoped<IRedisTypedClient<Customer>>(di => new RedisTypedClient);
но ничего такого не найдено и компилятор выдает ошибку сборки.
Как зарегистрировать эту IRedisTypedClient
зависимость?
Спасибо!