Files

39 lines
1.0 KiB
Python

from redis import Redis
from redis.backoff import NoBackoff
from redis.retry import Retry
from app.core.config import get_settings
_client: Redis | None = None
_client_key: tuple | None = None
def get_redis() -> Redis:
global _client, _client_key
settings = get_settings()
key = (
settings.redis_host,
settings.redis_port,
settings.redis_db,
settings.redis_password,
settings.redis_timeout_sec,
settings.redis_ssl_enabled,
)
if _client is not None and _client_key == key:
return _client
if _client is not None:
_client.close()
_client = Redis(
host=settings.redis_host,
port=settings.redis_port,
db=settings.redis_db,
password=settings.redis_password or None,
socket_timeout=settings.redis_timeout_sec,
socket_connect_timeout=settings.redis_timeout_sec,
ssl=settings.redis_ssl_enabled,
decode_responses=True,
retry=Retry(NoBackoff(), 0),
)
_client_key = key
return _client