From 783f6b0c18272b7f9ee988664c4194ecc80e23a7 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期四, 03 八月 2023 14:21:45 +0800 Subject: [PATCH] redis上级缓存添加 --- trade/trade_data_manager.py | 37 ++++++++++++++++++++++++++++++++----- 1 files changed, 32 insertions(+), 5 deletions(-) diff --git a/trade/trade_data_manager.py b/trade/trade_data_manager.py index 6d7e1b3..252e61f 100644 --- a/trade/trade_data_manager.py +++ b/trade/trade_data_manager.py @@ -161,7 +161,18 @@ # 浠g爜瀹炴椂浠锋牸绠$悊鍣� class CodeActualPriceProcessor: - __redisManager = redis_manager.RedisManager(0) + __instance = None + + def __new__(cls, *args, **kwargs): + if not cls.__instance: + cls.__instance = super(CodeActualPriceProcessor, cls).__new__(cls, *args, **kwargs) + # 鍒濆鍖栬缃� + # 鑾峰彇浜ゆ槗绐楀彛鐨勯攣 + cls.__instance.__redisManager = redis_manager.RedisManager(0) + cls.__instance.__under_water_last_time_cache = {} + cls.__instance.__code_current_rate_cache = {} + + return cls.__instance def __get_redis(self): return self.__redisManager.getRedis() @@ -169,15 +180,25 @@ # 淇濆瓨璺屼环鐨勬椂闂� def __save_down_price_time(self, code, time_str): key = "under_water_last_time-{}".format(code) + tool.CodeDataCacheUtil.set_cache(self.__under_water_last_time_cache, code, time_str) RedisUtils.setex(self.__get_redis(), key, tool.get_expire(), time_str) def __remove_down_price_time(self, code): key = "under_water_last_time-{}".format(code) + tool.CodeDataCacheUtil.clear_cache(self.__under_water_last_time_cache, code) RedisUtils.delete(self.__get_redis(), key) def __get_last_down_price_time(self, code): key = "under_water_last_time-{}".format(code) return RedisUtils.get(self.__get_redis(), key) + + def __get_last_down_price_time_cache(self, code): + cache_result = tool.CodeDataCacheUtil.get_cache(self.__under_water_last_time_cache, code) + if cache_result[0]: + return cache_result[1] + val = self.__get_last_down_price_time(code) + tool.CodeDataCacheUtil.set_cache(self.__under_water_last_time_cache, code, val) + return val def __increment_down_price_time(self, code, seconds): key = "under_water_seconds-{}".format(code) @@ -212,6 +233,7 @@ # 淇濆瓨褰撳墠娑ㄥ箙 def __save_current_rate(self, code, rate): + tool.CodeDataCacheUtil.set_cache(self.__code_current_rate_cache, code, rate) key = "code_current_rate-{}".format(code) RedisUtils.setex(self.__get_redis(), key, tool.get_expire(), rate) @@ -224,7 +246,12 @@ return None def get_current_rate(self, code): - return self.__get_current_rate(code) + cache_result = tool.CodeDataCacheUtil.get_cache(self.__code_current_rate_cache, code) + if cache_result[0]: + return cache_result[1] + val = self.__get_current_rate(code) + tool.CodeDataCacheUtil.set_cache(self.__code_current_rate_cache, code, val) + return val def process_rate(self, code, rate, time_str): # 淇濆瓨鐩墠鐨勪唬鐮佹定骞� @@ -234,7 +261,7 @@ return # now_str = tool.get_now_time_str() if rate >= 0: - down_start_time = self.__get_last_down_price_time(code) + down_start_time = self.__get_last_down_price_time_cache(code) if down_start_time is None: return else: @@ -245,7 +272,7 @@ self.__remove_down_price_time(code) else: # 璁板綍寮�濮嬪�� - if self.__get_last_down_price_time(code) is None: + if self.__get_last_down_price_time_cache(code) is None: self.__save_down_price_time(code, time_str) # 淇濆瓨鐜颁环 @@ -292,7 +319,7 @@ infos = [] for k in keys: code = k.split("-")[1] - rate = self.__get_current_rate(code) + rate = self.get_current_rate(code) infos.append((code, rate)) # 鎺掑簭淇℃伅 sorted_infos = sorted(infos, key=lambda tup: tup[1], reverse=True) -- Gitblit v1.8.0