From fb47d36048e94b9a506d5c153e3dd19a01e37df1 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期一, 30 十月 2023 16:30:27 +0800
Subject: [PATCH] bug修复

---
 code_attribute/big_money_num_manager.py |   43 +++++++++++++++++++++++++++++--------------
 1 files changed, 29 insertions(+), 14 deletions(-)

diff --git a/code_attribute/big_money_num_manager.py b/code_attribute/big_money_num_manager.py
index 83858f3..c8ebfc7 100644
--- a/code_attribute/big_money_num_manager.py
+++ b/code_attribute/big_money_num_manager.py
@@ -3,11 +3,12 @@
 """
 
 # 澶у崟绠$悊
-from db import redis_manager
-from db.redis_manager import RedisUtils
+from db import redis_manager_delegate as redis_manager
+from db.redis_manager_delegate import RedisUtils
 from utils import tool
 
-__redisManager = redis_manager.RedisManager(0)
+__db = 0
+__redisManager = redis_manager.RedisManager(__db)
 
 
 # 鏄惁涓哄ぇ鍗�
@@ -18,35 +19,49 @@
         return False
 
 
+__big_money_cache = {}
+
+
 def add_num(code, num):
-    redis = __redisManager.getRedis()
-    RedisUtils.incrby(redis,"big_money-{}".format(code), num)
+    if code not in __big_money_cache:
+        __big_money_cache[code] = 0
+    __big_money_cache[code] += num
+    RedisUtils.incrby_async(__db, "big_money-{}".format(code), num)
 
 
 # 璁剧疆杩囨湡鏃堕棿
 def expire(code):
-    redis = __redisManager.getRedis()
-    RedisUtils.expire(redis, "big_money-{}".format(code), tool.get_expire())
+    RedisUtils.expire(__redisManager.getRedis(), "big_money-{}".format(code), tool.get_expire())
 
 
 def reset(code):
-    redis = __redisManager.getRedis()
-    RedisUtils.set(redis,"big_money-{}".format(code), 0)
+    __big_money_cache[code] = 0
+    RedisUtils.set(__redisManager.getRedis(), "big_money-{}".format(code), 0)
 
 
 def get_num(code):
-    redis = __redisManager.getRedis()
-    num = RedisUtils.get(redis, "big_money-{}".format(code))
+    num = RedisUtils.get(__redisManager.getRedis(), "big_money-{}".format(code))
     if num is None:
         return 0
     return round(int(num) / 1000 / 4)
 
 
+def get_num_cache(code):
+    if code in __big_money_cache:
+        return __big_money_cache[code]
+    num = get_num(code)
+    __big_money_cache[code] = num
+    return num
+
+
 def reset_all():
     redis = __redisManager.getRedis()
-    keys = RedisUtils.keys(redis, "big_money-*")
-    for k in keys:
-        RedisUtils.setex(redis, k, tool.get_expire(), 0)
+    try:
+        keys = RedisUtils.keys(redis, "big_money-*", auto_free=False)
+        for k in keys:
+            RedisUtils.setex(redis, k, tool.get_expire(), 0, auto_free=False)
+    finally:
+        RedisUtils.realse(redis)
 
 
 if __name__ == "__main__":

--
Gitblit v1.8.0