Esempio n. 1
0
        /// <summary>
        /// Envia a solicitacao usando o cache
        /// </summary>
        /// <param name="key">chave que sera utilizada para salvar o cache ou buscada</param>
        /// <param name="ttlUnit">unidade de tempo para expirar o cache</param>
        /// <param name="duration">valor da duracao </param>
        public async Task <ResponseBase> Send(string key, TTLUnit ttlUnit, double duration)
        {
            using (_logger.BeginScope("GET com cache"))
            {
                base._method = "GET";
                string dataCached = await _cache.Get(key);

                ResponseBase result;
                if (!String.IsNullOrEmpty(dataCached))
                {
                    _logger.LogInformation("Recuperado cache com sucesso");
                    result = new ResponseBase(304u, dataCached);
                }
                else
                {
                    result = await base.Send();

                    if (result.StatusCode() == 200)
                    {
                        _logger.LogInformation("Salvando cache chave {0} duracao {1} {2}", key, duration, ttlUnit.ToString());
                        await _cache.Set(result.Content(), key, duration, ttlUnit);
                    }
                }
                return(result);
            }
        }
Esempio n. 2
0
        public Task Set(string data, string key, double time, TTLUnit ttlUnit)
        {
            if (!Equals(_connection, null) && _connection.IsConnected)
            {
                var dbRedis = _connection.GetDatabase();
                //ver se preciso colcar o wait
                TimeSpan _ttl = timeSpanForTTLUnit(time, ttlUnit);
                dbRedis.StringSetAsync(key, data, _ttl);
            }


            return(Task.CompletedTask);
        }
Esempio n. 3
0
        private TimeSpan timeSpanForTTLUnit(double time, TTLUnit ttlUnit)
        {
            switch (ttlUnit)
            {
            case TTLUnit.Hours:
                return(TimeSpan.FromHours(time));

            case TTLUnit.Minutes:
                return(TimeSpan.FromMinutes(time));

            case TTLUnit.Seconds:
                return(TimeSpan.FromSeconds(time));

            case TTLUnit.MilliSeconds:
                return(TimeSpan.FromMilliseconds(time));

            default:
                return(TimeSpan.FromMilliseconds(time));
            }
        }