from __future__ import annotations

from redis.asyncio import Redis

from app.core.config import settings


def get_redis() -> Redis:
    """Return an async Redis client configured from settings."""
    return Redis.from_url(settings.REDIS_URL, decode_responses=True)


async def is_redis_ready() -> bool:
    """Ping Redis for readiness checks."""
    redis = get_redis()
    try:
        pong = await redis.ping()
        return bool(pong)
    except Exception:
        return False
    finally:
        await redis.aclose()
