module QasDockGem class RedisService def initialize @logger = Logger.new(STDOUT) end def initialize_redis require 'redis' params_redis = { host: ENV["uri_redis"], port: 6379, connect_timeout: 0.5, read_timeout: 1.0, write_timeout: 1.0, reconnect_delay: 0.5, reconnect_delay_max: 1.5 } #Realiza a tentativa de conexão com o redis com os params informados @redis = Redis.new(params_redis) begin #verifica se a conexão obteve sucesso @redis.ping #caso tenha obtido sucesso na conexão, retorna o objeto do Redis return @redis rescue StandardError => redis_exception @redis = nil @logger.error("Params Redis: #{JSON.pretty_generate(JSON.parse(params_redis.to_json))}") @logger.error("Exceção retornada do Redis: #{redis_exception.inspect}") @logger.error("Mensagem de exceção retornada do Redis: #{redis_exception.message}") end end def get_key_redis(key) @logger.info("Buscando chave #{key} no Redis") @redis = initialize_redis if @redis.nil? begin @redis.get(key) rescue => redis_excep_get @logger.error("Exceção retornada do redis ao consultar a chave: #{redis_excep_get}") return nil end end def set_key_redis(key, value, ttl) @logger.info("Cadastrando chave #{key} com valor: #{value} e tempo de duração: #{ttl}") @redis = initialize_redis if @redis.nil? begin set_redis = @redis.set(key, value, ex: ttl) @logger.info("Chave cadastrada com sucesso no redis") if set_redis == "OK" rescue => redis_excep_set @logger.error("Exceção retornada do redis ao cadastrar a chave: #{redis_excep_set}") return nil end end end end