Files
exchange_monitor_sync/utils/redis_client.py
2025-12-02 22:05:54 +08:00

54 lines
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import redis
from loguru import logger
from config.settings import REDIS_CONFIG
class RedisClient:
"""Redis客户端管理器"""
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super().__new__(cls)
cls._instance._initialized = False
return cls._instance
def __init__(self):
if not self._initialized:
self._pool = None
self._client = None
self._initialized = True
@property
def client(self):
"""获取Redis客户端懒加载"""
if self._client is None:
self._init_connection_pool()
return self._client
def _init_connection_pool(self):
"""初始化连接池"""
try:
self._pool = redis.ConnectionPool(
host=REDIS_CONFIG['host'],
port=REDIS_CONFIG['port'],
db=REDIS_CONFIG['db'],
decode_responses=REDIS_CONFIG['decode_responses'],
max_connections=REDIS_CONFIG['max_connections'],
socket_keepalive=True
)
self._client = redis.Redis(connection_pool=self._pool)
# 测试连接
self._client.ping()
logger.info("Redis连接池初始化成功")
except Exception as e:
logger.error(f"Redis连接失败: {e}")
raise
def close(self):
"""关闭连接池"""
if self._pool:
self._pool.disconnect()
logger.info("Redis连接池已关闭")