From 01a6c8606f5af8eaa328f562634a8950dd9d1f0d Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期一, 07 八月 2023 14:49:58 +0800
Subject: [PATCH] redis批量提交数据
---
code_attribute/code_volumn_manager.py | 84 +++++++++++++++++++++++++++++-------------
1 files changed, 58 insertions(+), 26 deletions(-)
diff --git a/code_attribute/code_volumn_manager.py b/code_attribute/code_volumn_manager.py
index 23bb5f8..35295fd 100644
--- a/code_attribute/code_volumn_manager.py
+++ b/code_attribute/code_volumn_manager.py
@@ -20,8 +20,12 @@
redis = __redis_manager.getRedis()
global_util.max60_volumn[code] = (max60, max60_day)
global_util.yesterday_volumn[code] = yesterday
- RedisUtils.setex(redis, "volumn_max60-{}".format(code), tool.get_expire(), json.dumps((max60, max60_day)))
- RedisUtils.setex(redis, "volumn_yes-{}".format(code), tool.get_expire(), yesterday)
+ try:
+ RedisUtils.setex(redis, "volumn_max60-{}".format(code), tool.get_expire(), json.dumps((max60, max60_day)),
+ auto_free=False)
+ RedisUtils.setex(redis, "volumn_yes-{}".format(code), tool.get_expire(), yesterday, auto_free=False)
+ finally:
+ RedisUtils.realse(redis)
# 鑾峰彇鍘嗗彶閲�
@@ -29,29 +33,54 @@
max60 = global_util.max60_volumn.get(code)
yesterday = global_util.yesterday_volumn.get(code)
redis = __redis_manager.getRedis()
- if max60 is None:
- max60 = RedisUtils.get(redis, "volumn_max60-{}".format(code))
- if max60:
- max60 = json.loads(max60)
- if yesterday is None:
- yesterday = RedisUtils.get(redis, "volumn_yes-{}".format(code))
- return max60, yesterday
+ try:
+ if max60 is None:
+ max60 = RedisUtils.get(redis, "volumn_max60-{}".format(code), auto_free=False)
+ if max60:
+ max60 = json.loads(max60)
+ if yesterday is None:
+ yesterday = RedisUtils.get(redis, "volumn_yes-{}".format(code), auto_free=False)
+ return max60, yesterday
+ finally:
+ RedisUtils.realse(redis)
+
+__today_volumn_cache = {}
+
+
+# 閲忕殑鍙樺寲澶т繚瀛�
# 璁剧疆浠婃棩閲�
def set_today_volumn(code, volumn):
logger_day_volumn.info("code:{} volumn:{}".format(code, volumn))
- redis = __redis_manager.getRedis()
global_util.today_volumn[code] = volumn
- RedisUtils.setex(redis, "volumn_today-{}".format(code), tool.get_expire(), volumn)
+ # 鏈�1000鎵嬬殑鍙樺寲鎵嶄繚瀛�
+ if code in __today_volumn_cache and volumn - __today_volumn_cache[code] < 100000:
+ return
+ __today_volumn_cache[code] = volumn
+ RedisUtils.setex(__redis_manager.getRedis(), "volumn_today-{}".format(code), tool.get_expire(), volumn)
+
+
+# datas:[(code, volumn)]
+def set_today_volumns(datas):
+ pipe = __redis_manager.getRedis().pipeline()
+ for d in datas:
+ code, volumn = d
+ logger_day_volumn.info("code:{} volumn:{}".format(code, volumn))
+ global_util.today_volumn[code] = volumn
+ # 鏈�1000鎵嬬殑鍙樺寲鎵嶄繚瀛�
+ if code in __today_volumn_cache and volumn - __today_volumn_cache[code] < 100000:
+ continue
+ __today_volumn_cache[code] = volumn
+ RedisUtils.setex(pipe, "volumn_today-{}".format(code), tool.get_expire(), volumn)
+ pipe.execute()
# 鑾峰彇浠婃棩閲�
def get_today_volumn(code):
_volumn = global_util.today_volumn.get(code)
if _volumn is None:
- redis = __redis_manager.getRedis()
- _volumn = RedisUtils.get(redis, "volumn_today-{}".format(code))
+ _volumn = RedisUtils.get(__redis_manager.getRedis(), "volumn_today-{}".format(code))
return _volumn
@@ -92,19 +121,22 @@
# 灏嗛噺浠庢暟鎹簱鍔犲叆鍐呭瓨
def load():
redis = __redis_manager.getRedis()
- keys = RedisUtils.keys(redis, "volumn_max60-*")
- if keys is not None:
- for k in keys:
- code = k.split("-")[1]
- max60_volumn = RedisUtils.get(redis, k)
- if max60_volumn:
- max60_volumn = json.loads(max60_volumn)
- global_util.max60_volumn[code] = max60_volumn
- keys = RedisUtils.keys(redis, "volumn_yes-*")
- if keys is not None:
- for k in keys:
- code = k.split("-")[1]
- global_util.yesterday_volumn[code] = RedisUtils.get(redis, k)
+ try:
+ keys = RedisUtils.keys(redis, "volumn_max60-*", auto_free=False)
+ if keys is not None:
+ for k in keys:
+ code = k.split("-")[1]
+ max60_volumn = RedisUtils.get(redis, k, auto_free=False)
+ if max60_volumn:
+ max60_volumn = json.loads(max60_volumn)
+ global_util.max60_volumn[code] = max60_volumn
+ keys = RedisUtils.keys(redis, "volumn_yes-*", auto_free=False)
+ if keys is not None:
+ for k in keys:
+ code = k.split("-")[1]
+ global_util.yesterday_volumn[code] = RedisUtils.get(redis, k, auto_free=False)
+ finally:
+ RedisUtils.realse(redis)
if __name__ == "__main__":
--
Gitblit v1.8.0