Ver código fonte

Merge branch 'master' into dev

# Conflicts:
#	Controller/EquipmentManager.py
#	Controller/EquipmentManagerV3.py
#	Model/models.py
#	Service/ModelService.py
修改redis缓存逻辑
tanghongbin 4 anos atrás
pai
commit
5742ecd02f
2 arquivos alterados com 35 adições e 9 exclusões
  1. 28 9
      Controller/DetectController.py
  2. 7 0
      Object/RedisObject.py

+ 28 - 9
Controller/DetectController.py

@@ -172,8 +172,8 @@ class DetectControllerView(View):
         # 消息提醒功能新增
 
         # 如果传空上来,就默认为0
-        if tz=='':
-            tz=0
+        if tz == '':
+            tz = 0
         detect_group = request_dict.get('detect_group', None)
         interval = request_dict.get('interval', None)
         if not status:
@@ -206,7 +206,6 @@ class DetectControllerView(View):
         # else:
         #     DETECT_PUSH_DOMAIN = 'en.push.dvema.com'
 
-
         nowTime = int(time.time())
         if dvqs.exists():
             # 修改状态
@@ -246,15 +245,14 @@ class DetectControllerView(View):
             if status == 0:
                 UidPushModel.objects.filter(uid_set__uid=uid).delete()
                 # 状态为0的时候删除redis缓存数据
-                ykey = '{uid}_redis_qs'.format(uid=uid)
-                redisObj = RedisObject(db=6, SERVER_HOST='push.dvema.com')
-                redisObj.del_data(key=ykey)
+                self.do_delete_redis(uid)
                 return response.json(0)
             elif status == 1:
                 uid_push_qs = UidPushModel.objects.filter(userID_id=userID, m_code=m_code, uid_set__uid=uid)
-                ykey = '{uid}_redis_qs'.format(uid=uid)
-                redisObj = RedisObject(db=6, SERVER_HOST='push.dvema.com')
-                redisObj.del_data(key=ykey)
+                # ykey = '{uid}_redis_qs'.format(uid=uid)
+                # redisObj = RedisObject(db=6, SERVER_HOST='push.dvema.com')
+                # redisObj.del_data(key=ykey)
+
                 if uid_push_qs.exists():
                     uid_push_update_dict = {
                         'appBundleId': appBundleId,
@@ -283,6 +281,11 @@ class DetectControllerView(View):
                     }
                     # 绑定设备推送
                     UidPushModel.objects.create(**uid_push_create_dict)
+
+                if interval:
+                    self.do_delete_redis(uid, int(interval))
+                else:
+                    self.do_delete_redis(uid)
                 # utko = UidTokenObject()
                 # # right
                 # utko.generate(data={'uid': uid})
@@ -294,6 +297,22 @@ class DetectControllerView(View):
         else:
             return response.json(14)
 
+    def do_delete_redis(self, uid, detect_interval=0):
+        keyPattern = '{uid}*'.format(uid=uid)
+        redisObj = RedisObject(db=6, SERVER_HOST='push.dvema.com')
+        keys = redisObj.get_keys(keyPattern)
+        if keys:
+            for key in keys:
+                key = key.decode()
+                if detect_interval == 0:
+                    redisObj.del_data(key=key)
+                elif key.find('plt') != -1:
+                    continue
+                elif key.find('flag') != -1:
+                    redisObj.set_data(key=key, val=1, expire=detect_interval)
+                else:
+                    redisObj.del_data(key=key)
+
     def do_update_interval(self, userID, request_dict, response):
         uid = request_dict.get('uid', None)
         interval = request_dict.get('interval', None)

+ 7 - 0
Object/RedisObject.py

@@ -84,3 +84,10 @@ class RedisObject:
             return ttl
         else:
             return 0
+
+    def get_keys(self, key):
+        keys = self.CONN.keys(key)
+        if keys:
+            return keys
+        else:
+            return False