""" Redis缓存服务 """ import json import redis from typing import Any, Optional, Union from app.config import settings class RedisCache: """Redis缓存管理器""" def __init__(self): self.client = redis.from_url(settings.REDIS_URL, decode_responses=True) async def get(self, key: str) -> Optional[Any]: """获取缓存值""" try: value = self.client.get(key) if value: return json.loads(value) return None except Exception as e: from app.core.logger import logger logger.exception("Redis get error") return None async def set(self, key: str, value: Any, expire: int = 3600) -> bool: """设置缓存值""" try: json_value = json.dumps(value) return self.client.setex(key, expire, json_value) except Exception as e: from app.core.logger import logger logger.exception("Redis set error") return False async def delete(self, key: str) -> bool: """删除缓存值""" try: return bool(self.client.delete(key)) except Exception as e: from app.core.logger import logger logger.exception("Redis delete error") return False async def exists(self, key: str) -> bool: """检查键是否存在""" try: return bool(self.client.exists(key)) except Exception as e: from app.core.logger import logger logger.exception("Redis exists error") return False async def expire(self, key: str, time: int) -> bool: """设置过期时间""" try: return bool(self.client.expire(key, time)) except Exception as e: from app.core.logger import logger logger.exception("Redis expire error") return False def close(self): """关闭连接""" try: self.client.close() except Exception as e: from app.core.logger import logger logger.exception("Redis close error") # 全局缓存实例 redis_cache = RedisCache() async def get_cache() -> RedisCache: """获取缓存实例的依赖注入函数""" return redis_cache