| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- """
- 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
|