97 lines
3.2 KiB
Python
97 lines
3.2 KiB
Python
import redis
|
||
from loguru import logger
|
||
|
||
|
||
class RedisClient:
|
||
def __init__(self, host: str = 'localhost', port: int = 6379, password: str = None):
|
||
self.host = host
|
||
self.port = port
|
||
self.password = password
|
||
self.browser_client = None
|
||
self.task_client = None
|
||
self.cache_client = None
|
||
self.ok_client = None
|
||
self.init()
|
||
|
||
# 初始化
|
||
def init(self):
|
||
"""
|
||
初始化Redis客户端
|
||
:return:
|
||
"""
|
||
if self.browser_client is None:
|
||
self.browser_client = redis.Redis(host=self.host, port=self.port, password=self.password, db=0,
|
||
decode_responses=True)
|
||
|
||
if self.task_client is None:
|
||
self.task_client = redis.Redis(host=self.host, port=self.port, password=self.password, db=1,
|
||
decode_responses=True)
|
||
|
||
if self.cache_client is None:
|
||
self.cache_client = redis.Redis(host=self.host, port=self.port, password=self.password, db=2,
|
||
decode_responses=True)
|
||
|
||
if self.ok_client is None:
|
||
self.ok_client = redis.Redis(host=self.host, port=self.port, password=self.password, db=3,
|
||
decode_responses=True)
|
||
|
||
logger.info("Redis连接已初始化")
|
||
|
||
# 关闭连接
|
||
def close(self):
|
||
self.browser_client.close()
|
||
self.task_client.close()
|
||
self.cache_client.close()
|
||
self.ok_client.close()
|
||
logger.info("Redis连接已关闭")
|
||
|
||
"""browser_client"""
|
||
|
||
# 写入浏览器信息
|
||
async def set_browser(self, browser_id: str, data: dict):
|
||
try:
|
||
# 处理None值,将其转换为空字符串
|
||
processed_data = {}
|
||
for key, value in data.items():
|
||
if value is None:
|
||
processed_data[key] = ""
|
||
else:
|
||
processed_data[key] = value
|
||
|
||
self.browser_client.hset(browser_id, mapping=processed_data)
|
||
logger.info(f"写入浏览器信息: {browser_id} - {processed_data}")
|
||
return True
|
||
except Exception as e:
|
||
logger.error(f"写入浏览器信息失败: {browser_id} - {e}")
|
||
return False
|
||
|
||
# 获取浏览器信息
|
||
async def get_browser(self, browser_id: str = None):
|
||
try:
|
||
if browser_id is None:
|
||
# 获取全部数据
|
||
data = self.browser_client.hgetall()
|
||
else:
|
||
data = self.browser_client.hgetall(browser_id)
|
||
logger.info(f"获取浏览器信息: {browser_id} - {data}")
|
||
return data
|
||
except Exception as e:
|
||
logger.error(f"获取浏览器信息失败: {browser_id} - {e}")
|
||
|
||
|
||
async def main():
|
||
host = '183.66.27.14'
|
||
port = 50086
|
||
password = 'redis_AdJsBP'
|
||
redis_client = RedisClient(host, port, password)
|
||
# await redis_client.set_browser('9eac7f95ca2d47359ace4083a566e119', {'status': 'online', 'current_task_id': None})
|
||
await redis_client.get_browser('9eac7f95ca2d47359ace4083a566e119')
|
||
# 关闭连接
|
||
redis_client.close()
|
||
|
||
|
||
if __name__ == '__main__':
|
||
import asyncio
|
||
|
||
asyncio.run(main())
|