From c20c3c10635ce78db4a86ce9c0bb1d02e90f525d Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期二, 08 八月 2023 17:40:42 +0800 Subject: [PATCH] 单例+缓存优化 --- code_attribute/gpcode_manager.py | 29 ++++++++++++++++++++--------- 1 files changed, 20 insertions(+), 9 deletions(-) diff --git a/code_attribute/gpcode_manager.py b/code_attribute/gpcode_manager.py index d07e89a..fa562e6 100644 --- a/code_attribute/gpcode_manager.py +++ b/code_attribute/gpcode_manager.py @@ -225,7 +225,7 @@ codes = self.list_code() self.__want_buy_codes_cache.clear() if codes: - self.__want_buy_codes_cache += set(codes) + self.__want_buy_codes_cache |= set(codes) def is_in(self, code): return RedisUtils.sismember(self.__get_redis(), self.__redis_key, code) @@ -244,20 +244,19 @@ # 涓庨粦鍚嶅崟鐨勫尯鍒槸鏆傚仠浜ゆ槗浠g爜鍙槸涓嶄氦鏄擄紝涓嶈兘绉婚櫎L2鐩戞帶浣� class PauseBuyCodesManager: __instance = None + redisManager = redis_manager.RedisManager(0) + __redis_key = "pause_buy_codes" def __new__(cls, *args, **kwargs): if not cls.__instance: cls.__instance = super(PauseBuyCodesManager, cls).__new__(cls, *args, **kwargs) - # 鍒濆鍖栬缃� - # 鑾峰彇浜ゆ槗绐楀彛鐨勯攣 - cls.__instance.redisManager = redis_manager.RedisManager(0) - cls.__instance.__redis_key = "pause_buy_codes" - cls.__instance.__pause_buy_codes_cache = RedisUtils.smembers(cls.__instance.__get_redis(), - cls.__instance.__redis_key) + cls.__instance.__pause_buy_codes_cache = RedisUtils.smembers(cls.__get_redis(), + cls.__redis_key) return cls.__instance - def __get_redis(self): - return self.redisManager.getRedis() + @classmethod + def __get_redis(cls): + return cls.redisManager.getRedis() def clear(self): self.__pause_buy_codes_cache.clear() @@ -577,6 +576,18 @@ RedisUtils.setex(__redisManager.getRedis(), "price-{}".format(code), tool.get_expire(), price) +# datas:[(code,price)] +def set_prices(datas): + pipe = __redisManager.getRedis().pipeline() + for d in datas: + code, price = d[0], d[1] + if code in __current_price_cache and __current_price_cache[code] == price: + continue + __current_price_cache[code] = price + RedisUtils.setex(pipe, "price-{}".format(code), tool.get_expire(), price) + pipe.execute() + + # 鑾峰彇姝e湪鐩戝惉鐨勪唬鐮� def get_listen_codes(): redis_instance = __redisManager.getRedis() -- Gitblit v1.8.0