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