using langguanApi.Common.Redis; using langguanApi.Extensions.AutoDI; using Newtonsoft.Json; using StackExchange.Redis; namespace langguanApi.Common { /// /// 缓存管理 /// [ServiceInjection(InjectionType.Singleton)] public class CacheManager { private readonly IDatabase _redisDatabase; public CacheManager(RedisHelper redisHelper) { _redisDatabase = redisHelper._database; } /// /// 缓存数据 /// /// /// /// /// 缓存时间秒,0=int.max , /// public async Task GetConvertVale(string cacheKey, Func> dataFetcher, int seconds = 0) { var cacheData = await _redisDatabase.StringGetAsync(cacheKey); if (cacheData.IsNull) { var temp = await dataFetcher(); cacheData = JsonConvert.SerializeObject(temp); seconds = seconds == 0 ? int.MaxValue : seconds; await _redisDatabase.StringSetAsync(cacheKey, cacheData, TimeSpan.FromSeconds(seconds), When.NotExists); return temp; } return JsonConvert.DeserializeObject(cacheData); } } }