"""Redis 客户端（异步，全局单例）。

约定：
- 所有 Key 使用 `qycw:` 前缀，避免与同实例其他业务串台。
- decode_responses=True，业务侧拿到的就是 str。
"""
from redis.asyncio import Redis

from app.config import settings

KEY_PREFIX = "qycw:"


def k(*parts: str) -> str:
    return KEY_PREFIX + ":".join(parts)


redis_client: Redis = Redis(
    host=settings.REDIS_HOST,
    port=settings.REDIS_PORT,
    password=settings.REDIS_PASSWORD,
    db=settings.REDIS_DB,
    decode_responses=True,
    health_check_interval=30,
)


async def ping_redis() -> bool:
    return await redis_client.ping()


async def close_redis() -> None:
    await redis_client.aclose()
