"""Redis client singleton. Provides a lazily-initialised Redis connection that is reused across the application. The connection URL is read from ``settings.REDIS_URL``. Usage:: from app.infrastructure.redis_client import get_redis r = get_redis() r.set("key", "value", ex=300) """ import logging import redis from app.config import settings logger = logging.getLogger(__name__) _redis_client: redis.Redis | None = None def get_redis() -> redis.Redis: """Return a shared Redis client, creating it on first call.""" global _redis_client if _redis_client is None: _redis_client = redis.from_url( settings.REDIS_URL, decode_responses=True, ) logger.info("Redis client connected to %s", settings.REDIS_URL) return _redis_client