Files
ca_auto_table/app/utils/redis_tool.py
2025-11-18 16:46:04 +08:00

97 lines
3.2 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
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())