using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CoreCms.Net.Caching.AutoMate.RedisCache;
using CoreCms.Net.Configuration;
using CSRedis;
using Microsoft.Extensions.DependencyInjection;
using StackExchange.Redis;
namespace CoreCms.Net.Core.Config
{
///
/// Redis缓存 启动服务
///
public static class RedisCacheSetup
{
public static void AddRedisCacheSetup(this IServiceCollection services)
{
if (services == null) throw new ArgumentNullException(nameof(services));
if (AppSettingsConstVars.RedisUseCache)
{
//初始化Redis及分布式缓存
RedisHelper.Initialization(new CSRedisClient(AppSettingsConstVars.RedisConfigConnectionString));
}
services.AddTransient();
// 配置启动Redis服务,虽然可能影响项目启动速度,但是不能在运行的时候报错,所以是合理的
services.AddSingleton(sp =>
{
//获取连接字符串
string redisConfiguration = AppSettingsConstVars.RedisConfigConnectionString;
var configuration = ConfigurationOptions.Parse(redisConfiguration, true);
configuration.ResolveDns = true;
return ConnectionMultiplexer.Connect(configuration);
});
}
}
}