"""Shared Redis connection (cache / quota counters / cost budget counter).""" from __future__ import annotations from redis.asyncio import Redis, from_url from packages.shared.config import Settings, get_settings _client: Redis | None = None def create_redis(settings: Settings | None = None) -> Redis: cfg = settings or get_settings() return from_url(cfg.redis_url, encoding="utf-8", decode_responses=True) def get_redis() -> Redis: global _client if _client is None: _client = create_redis() return _client async def close_redis() -> None: global _client if _client is not None: await _client.aclose() _client = None