From 72149b3076983701b17f3dc55fd3ca60243c1f58 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期二, 08 八月 2023 10:42:42 +0800 Subject: [PATCH] redis异步数据提交 --- code_attribute/limit_up_time_manager.py | 62 +++++++++++++++++++----------- 1 files changed, 39 insertions(+), 23 deletions(-) diff --git a/code_attribute/limit_up_time_manager.py b/code_attribute/limit_up_time_manager.py index d839725..15e9f04 100644 --- a/code_attribute/limit_up_time_manager.py +++ b/code_attribute/limit_up_time_manager.py @@ -6,36 +6,52 @@ from db.redis_manager import RedisUtils from utils import global_util, tool -_redisManager = redis_manager.RedisManager(0) +class LimitUpTimeManager: + __limit_up_time_cache = {} + _redisManager = redis_manager.RedisManager(0) + __instance = None -def save_limit_up_time(code, time): - _time = get_limit_up_time(code) - if _time is None: - RedisUtils.setex( - _redisManager.getRedis(), "limit_up_time-{}".format(code), tool.get_expire(), time) - global_util.limit_up_time[code] = time + def __new__(cls, *args, **kwargs): + if not cls.__instance: + cls.__instance = super(LimitUpTimeManager, cls).__new__(cls, *args, **kwargs) + cls.load_limit_up_time() + return cls.__instance + @classmethod + def load_limit_up_time(cls): + redis = cls._redisManager.getRedis() + try: + keys = RedisUtils.keys(redis, "limit_up_time-*", auto_free=False) + for key in keys: + code = key.replace("limit_up_time-", "") + time_ = RedisUtils.get(redis, key, auto_free=False) + global_util.limit_up_time[code] = time_ + tool.CodeDataCacheUtil.set_cache(cls.__limit_up_time_cache, code, time_) + finally: + RedisUtils.realse(redis) -def get_limit_up_time(code): - time = global_util.limit_up_time.get(code) - if time is None: - time = RedisUtils.get(_redisManager.getRedis(), "limit_up_time-{}".format(code)) - if time is not None: + def save_limit_up_time(self, code, time): + cache_result = tool.CodeDataCacheUtil.get_cache(self.__limit_up_time_cache, code) + if not cache_result[0] or cache_result[1] is None: global_util.limit_up_time[code] = time + tool.CodeDataCacheUtil.set_cache(self.__limit_up_time_cache, code, time) + RedisUtils.setex_async( + self._redisManager.getRedis(), "limit_up_time-{}".format(code), tool.get_expire(), time) - return time + def get_limit_up_time(self, code): + time = global_util.limit_up_time.get(code) + if time is None: + time = RedisUtils.get(self._redisManager.getRedis(), "limit_up_time-{}".format(code)) + if time is not None: + global_util.limit_up_time[code] = time + return time - -def load_limit_up_time(): - redis = _redisManager.getRedis() - try: - keys = RedisUtils.keys(redis, "limit_up_time-*", auto_free=False) - for key in keys: - code = key.replace("limit_up_time-", "") - global_util.limit_up_time[code] = RedisUtils.get(redis, key, auto_free=False) - finally: - RedisUtils.realse(redis) + def get_limit_up_time_cache(self, code): + cache_result = tool.CodeDataCacheUtil.get_cache(self.__limit_up_time_cache, code) + if cache_result[0]: + return cache_result[1] + return None if __name__ == "__main__": -- Gitblit v1.8.0