parent
ee069bdda6
commit
4e7dd583be
@ -0,0 +1,36 @@
|
|||||||
|
using Infrastructure.Options;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using StackExchange.Redis;
|
||||||
|
|
||||||
|
namespace Infrastructure.Extensions;
|
||||||
|
|
||||||
|
public static class RedisSetup
|
||||||
|
{
|
||||||
|
public static IServiceCollection AddRedisSetup(this IServiceCollection services, IConfiguration configuration)
|
||||||
|
{
|
||||||
|
ArgumentNullException.ThrowIfNull(services);
|
||||||
|
ArgumentNullException.ThrowIfNull(configuration);
|
||||||
|
var redisOptions = configuration.GetSection(RedisOptions.Name).Get<RedisOptions>();
|
||||||
|
if (redisOptions is null || !redisOptions.IsEnable)
|
||||||
|
{
|
||||||
|
return services;
|
||||||
|
}
|
||||||
|
|
||||||
|
services.AddSingleton<ConnectionMultiplexer>(provider =>
|
||||||
|
{
|
||||||
|
var host = configuration["REDIS_HOST"] ?? redisOptions.Host;
|
||||||
|
ArgumentException.ThrowIfNullOrEmpty(host);
|
||||||
|
var password = configuration["REDIS_PASSWORD"] ?? redisOptions.Password;
|
||||||
|
ArgumentException.ThrowIfNullOrEmpty(password);
|
||||||
|
var serviceName = configuration["REDIS_SERVICE_NAME"] ?? redisOptions.SeriveName;
|
||||||
|
var connectionString = string.IsNullOrEmpty(serviceName)
|
||||||
|
? $"{host},password={password}"
|
||||||
|
: $"{host},password={password},serviceName={serviceName}";
|
||||||
|
var redisConfig = ConfigurationOptions.Parse(connectionString, true);
|
||||||
|
redisConfig.ResolveDns = true;
|
||||||
|
return ConnectionMultiplexer.Connect(redisConfig);
|
||||||
|
});
|
||||||
|
return services;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue