修复重复初始化问题 - 统一Redis连接管理
主要修复: 1. 创建统一Redis连接管理器 (src/core/redis_manager.py) - 单例模式管理所有Redis连接 - 懒加载连接,避免重复初始化 - 线程安全的连接管理 2. 更新所有Redis使用模块 - TokenMonitor: 使用统一Redis管理器 - AISuccessMonitor: 移除重复Redis连接代码 - SystemOptimizer: 统一Redis连接管理 - ConversationHistoryManager: 使用统一Redis管理器 3. 修复DialogueManager重复初始化 - 使用懒加载属性(@property)避免重复创建监控器 - 只有在实际使用时才创建实例 4. 优化启动性能 - 避免重复的Redis连接创建 - 消除重复的TSP助手初始化 - 减少启动时的日志输出 技术改进: - 单例模式Redis管理器 - 懒加载组件初始化 - 统一连接管理 - 线程安全设计 解决启动卡顿问题,提升系统响应速度
This commit is contained in:
@@ -22,21 +22,32 @@ class CacheManager:
|
||||
self.default_ttl = 60 # 默认1分钟过期,提高响应速度
|
||||
self.max_memory_size = 2000 # 增加内存缓存条目数
|
||||
|
||||
# Redis支持(可选)
|
||||
# Redis支持(可选)- 延迟连接
|
||||
self.redis_client = None
|
||||
if redis_url:
|
||||
self.redis_url = redis_url
|
||||
self.redis_connected = False
|
||||
|
||||
def _ensure_redis_connection(self):
|
||||
"""确保Redis连接(延迟连接)"""
|
||||
if self.redis_url and not self.redis_connected:
|
||||
try:
|
||||
import redis
|
||||
self.redis_client = redis.from_url(redis_url)
|
||||
self.redis_client = redis.from_url(self.redis_url, socket_connect_timeout=2, socket_timeout=2)
|
||||
self.redis_client.ping() # 测试连接
|
||||
self.redis_connected = True
|
||||
logger.info("Redis缓存已启用")
|
||||
except ImportError:
|
||||
logger.warning("Redis未安装,使用内存缓存")
|
||||
logger.debug("Redis未安装,使用内存缓存")
|
||||
except Exception as e:
|
||||
logger.warning(f"Redis连接失败: {e},使用内存缓存")
|
||||
logger.debug(f"Redis连接失败: {e},使用内存缓存")
|
||||
self.redis_client = None
|
||||
|
||||
def get(self, key: str) -> Optional[Any]:
|
||||
"""获取缓存值"""
|
||||
try:
|
||||
# 确保Redis连接
|
||||
self._ensure_redis_connection()
|
||||
|
||||
# 先尝试Redis
|
||||
if self.redis_client:
|
||||
try:
|
||||
@@ -66,6 +77,9 @@ class CacheManager:
|
||||
ttl = ttl or self.default_ttl
|
||||
expires_at = time.time() + ttl
|
||||
|
||||
# 确保Redis连接
|
||||
self._ensure_redis_connection()
|
||||
|
||||
# 先尝试Redis
|
||||
if self.redis_client:
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user