Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
        /// <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));
        }