| | |
| | | """ |
| | | redis管理器 |
| | | """ |
| | | import builtins |
| | | import json |
| | | import logging |
| | | import queue |
| | | import time |
| | |
| | | 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 |
| | | |
| | |
| | | |
| | | |
| | | class RedisUtils: |
| | | # 本机执行redis |
| | | __LOCAL_REQUEST = True |
| | | |
| | | __async_task_queue = queue.Queue(maxsize=4096) |
| | | |
| | | @classmethod |
| | |
| | | |
| | | @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_): |