From 23361ac1cacec70b840f497cc35d2f7a5de66387 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期四, 28 十一月 2024 19:11:00 +0800 Subject: [PATCH] redis接口本地化/扫入策略修改 --- db/redis_manager_delegate.py | 90 +++++++++++++++++++++++++++++++++----------- 1 files changed, 67 insertions(+), 23 deletions(-) diff --git a/db/redis_manager_delegate.py b/db/redis_manager_delegate.py index b6db3aa..4d212b2 100644 --- a/db/redis_manager_delegate.py +++ b/db/redis_manager_delegate.py @@ -1,6 +1,8 @@ """ redis绠$悊鍣� """ +import builtins +import json import logging import queue import time @@ -11,6 +13,8 @@ from log_module import async_log_util from log_module.log import logger_redis_debug, logger_system from utils import tool, middle_api_protocol + +from db import redis_manager config = constant.REDIS_CONFIG @@ -33,6 +37,9 @@ class RedisUtils: + # 鏈満鎵цredis + __LOCAL_REQUEST = True + __async_task_queue = queue.Queue(maxsize=4096) @classmethod @@ -46,33 +53,70 @@ @classmethod def __request(cls, db, cmd, key, args=None): - data = { - "db": db, - "cmd": cmd, - "key": key, - } - if args is not None: - data["args"] = args - fdata = middle_api_protocol.load_redis_cmd(data) - result = middle_api_protocol.request(fdata) - return result + if cls.__LOCAL_REQUEST: + redis = RedisManager(db).getRedis() + method = getattr(redis_manager.RedisUtils, cmd) + args_ = [redis, key] + if args is not None: + if builtins.type(args) == tuple or builtins.type(args) == list: + args = list(args) + if cmd == "setex": + args_.append(args[0]) + if type(args[1]) == list: + args_.append(json.dumps(args[1])) + else: + args_.append(args[1]) + else: + for a in args: + args_.append(a) + else: + args_.append(args) + args_ = tuple(args_) + result = method(*args_) + if builtins.type(result) == set: + result = list(result) + return result + else: + data = { + "db": db, + "cmd": cmd, + "key": key, + } + if args is not None: + data["args"] = args + fdata = middle_api_protocol.load_redis_cmd(data) + result = middle_api_protocol.request(fdata) + return result # [(db, cmd, key, args)] @classmethod def __batch__request(cls, odatas): - _datas = [] - for d in odatas: - data = { - "db": d[0], - "cmd": d[1], - "key": d[2] - } - if d[3] is not None: - data["args"] = d[3] - _datas.append(data) - fdata = middle_api_protocol.load_redis_cmds(_datas) - results = middle_api_protocol.request(fdata) - return results + if cls.__LOCAL_REQUEST: + result_list = [] + for d in odatas: + db = d[0] + cmd = d[1] + key = d[2] + args = None + if d[3] is not None: + args = d[3] + result = cls.__request(db, cmd, key, args) + result_list.append(result) + return result_list + else: + _datas = [] + for d in odatas: + data = { + "db": d[0], + "cmd": d[1], + "key": d[2] + } + if d[3] is not None: + data["args"] = d[3] + _datas.append(data) + fdata = middle_api_protocol.load_redis_cmds(_datas) + results = middle_api_protocol.request(fdata) + return results @classmethod def __get_db(cls, redis_): -- Gitblit v1.8.0