using CSRedis;
using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.Caching.Redis;
using System.Security.AccessControl;
namespace SBF.API.Extentions
{
public static class HostExtentions
{
///
/// 使用缓存
///
/// 建造者
///
public static IHostBuilder UseCache(this IHostBuilder hostBuilder)
{
hostBuilder.ConfigureServices((buidlerContext, services) =>
{
var cacheOption = buidlerContext.Configuration.GetSection("Cache").Get();
switch (cacheOption.CacheType)
{
case CacheType.Memory: services.AddDistributedMemoryCache(); break;
case CacheType.Redis:
{
var csredis = new CSRedisClient(cacheOption.RedisEndpoint);
RedisHelper.Initialization(csredis);
services.AddSingleton(csredis);
services.AddSingleton(new CSRedisCache(RedisHelper.Instance));
}; break;
default: throw new Exception("缓存类型无效");
}
});
return hostBuilder;
}
}
internal class CacheOptions
{
public CacheType CacheType { get; set; }
public string RedisEndpoint { get; set; }
} ///
/// 缓存类型
///
public enum CacheType
{
///
/// 使用内存缓存(不支持分布式)
///
Memory,
///
/// 使用Redis缓存(支持分布式)
///
Redis
}
}