"""Redis 连接与缓存工具。""" import json import logging from typing import Any from app.core.config import settings logger = logging.getLogger(__name__) try: import redis.asyncio as redis _redis_client = redis.from_url(settings.redis_url, decode_responses=True) except ImportError: _redis_client = None logger.warning("redis 未安装,缓存功能不可用") async def cache_get(key: str) -> Any | None: """从 Redis 获取缓存。""" if not _redis_client: return None try: data = await _redis_client.get(key) return json.loads(data) if data else None except Exception: return None async def cache_set(key: str, value: Any, ttl: int = 300) -> None: """设置 Redis 缓存。""" if not _redis_client: return try: await _redis_client.setex(key, ttl, json.dumps(value, default=str)) except Exception: pass async def cache_delete(key: str) -> None: """删除 Redis 缓存。""" if not _redis_client: return try: await _redis_client.delete(key) except Exception: pass