public bool Get <TValue>(string key, TimeSpan absoluteExpiration, out TValue value) where TValue : class { value = default; if (_localMemoryCache.Get(key, out TValue cacheValue)) { value = cacheValue; } else { var redisValue = _redis.StringGet(RedisKey.GetAPIRedisKey(key)); if (!string.IsNullOrEmpty(redisValue)) { value = JsonConvert.DeserializeObject <TValue>(redisValue); _localMemoryCache.SetDataOrEmptyTag(key, value, absoluteExpiration); } else { return(false); } } return(true); }
/// <summary> /// 本地DB数据,走MemoryCache /// </summary> /// <returns></returns> public async Task <ApiResponse <IEnumerable <UserDTO> > > GetUser() { var cacheKey = "userListcacheKey"; IEnumerable <UserDTO> userList; IEnumerable <UserDTO> cacheValue; Func <Task <IEnumerable <UserDTO> > > func = async() => { _logger.LogInformation("init getuser"); if (_localMemoryCache.Get(cacheKey, out cacheValue)) { userList = cacheValue; } else { userList = await _testRepository.GetUser(); _localMemoryCache.SetDataOrEmptyTag(cacheKey, userList, Expiration); } return(userList); }; var errorMessage = "获取用户信息失败"; return(await ServiceHandlerAsync(func, errorMessage)); }