servico_plugnotas_teste/utils/redis.py
2026-07-10 16:32:22 -03:00

107 lines
No EOL
2.9 KiB
Python

import redis
# Fornece mecanismos de Caching e Persistência Volátil/PubSub na aplicação usando Redis
class RedisClient:
def __init__(self, host='localhost', port=6379, db=0):
"""
Inicializa o cliente Redis com as configurações fornecidas.
"""
self.client = redis.Redis(host=host, port=port, db=db, decode_responses=True)
def set(self, key, value):
"""
Define um valor para uma chave no Redis.
"""
self.client.set(key, value)
def setex(self, key, value, ex):
"""
Define um valor para uma chave no Redis com um tempo de expiração em segundos.
"""
self.client.set(key, value, ex)
def get(self, key):
"""
Obtém o valor de uma chave no Redis.
"""
return self.client.get(key)
def get_keys(self, pattern="*"):
"""
Obtém todas as chaves que correspondem a um padrão.
"""
return self.client.keys(pattern)
def get_all(self):
"""
Obtém todas as chaves e seus valores no Redis.
"""
keys = self.client.keys('*')
return {key: self.client.get(key) for key in keys}
def delete(self, key):
"""
Remove uma chave do Redis.
"""
self.client.delete(key)
def exists(self, key):
"""
Verifica se uma chave existe no Redis.
Retorna True se a chave existir, caso contrário, False.
"""
return self.client.exists(key) > 0
def close(self):
"""
Fecha a conexão com o Redis.
"""
self.client.close()
def set_expiration(self, key, value, seconds):
"""
Define um valor para uma chave e configura um tempo de expiração em segundos.
"""
self.client.set(key, value, ex=seconds)
def increment(self, key, amount=1):
"""
Incrementa o valor de uma chave numérica no Redis.
"""
return self.client.incr(key, amount)
def decrement(self, key, amount=1):
"""
Decrementa o valor de uma chave numérica no Redis.
"""
return self.client.decr(key, amount)
def hset(self, name, key, value):
"""
Define um campo em um hash no Redis.
"""
self.client.hset(name, key, value)
def hget(self, name, key):
"""
Obtém o valor de um campo em um hash no Redis.
"""
return self.client.hget(name, key)
def hgetall(self, name):
"""
Obtém todos os campos e valores de um hash no Redis.
"""
return self.client.hgetall(name)
def expire(self, key, seconds):
"""
Define um tempo de expiração para uma chave existente.
"""
self.client.expire(key, seconds)
def ttl(self, key):
"""
Obtém o tempo restante de vida (TTL) de uma chave.
"""
return self.client.ttl(key)