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 } }