27 lines
625 B
Python
27 lines
625 B
Python
"""Redis client provider — a single shared async connection pool."""
|
|
|
|
from redis.asyncio import Redis
|
|
|
|
from app.core.config import get_settings
|
|
|
|
_client: Redis | None = None
|
|
|
|
|
|
def get_redis() -> Redis:
|
|
"""Return the process-wide Redis client (created on first use)."""
|
|
global _client
|
|
if _client is None:
|
|
_client = Redis.from_url(
|
|
str(get_settings().redis_url),
|
|
encoding="utf-8",
|
|
decode_responses=True,
|
|
)
|
|
return _client
|
|
|
|
|
|
async def close_redis() -> None:
|
|
global _client
|
|
if _client is not None:
|
|
await _client.aclose()
|
|
_client = None
|