/// <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); } }
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); }
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)); } }