using CSRedis;
using Furion;
using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Caching.Redis;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
namespace Admin.NET.Core
{
public static class CSRedisSetup
{
///
/// CSRedis初始化
///
///
public static void AddCSRedisSetup(this IServiceCollection services)
{
services.AddSingleton(provider =>
{
var cacheOptions = App.GetOptions();
if (cacheOptions.CacheType == CacheTypeEnum.RedisCache.ToString())
{
var redisStr = $"{cacheOptions.RedisConnectionString},prefix={cacheOptions.InstanceName}";
var redis = new CSRedisClient(redisStr);
services.AddSingleton(redis);
RedisHelper.Initialization(redis);
return new CSRedisCache(redis);
}
else // 默认使用内存
{
services.AddDistributedMemoryCache();
IOptions options = provider.GetService>();
return new MemoryDistributedCache(options);
}
});
}
}
}