From c3ce2bc5d069ba57309567aee4ae418bc0cf75ed Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期五, 17 三月 2023 13:22:05 +0800
Subject: [PATCH] 优化异常处理以及级联设备状态查询

---
 src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java |  236 ++++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 192 insertions(+), 44 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java b/src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java
index 5ef0b39..d8270f1 100644
--- a/src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java
+++ b/src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java
@@ -1,19 +1,17 @@
 package com.genersoft.iot.vmp.utils.redis;
 
+import com.alibaba.fastjson2.JSONObject;
+import com.genersoft.iot.vmp.utils.SpringBeanFactory;
+import org.springframework.data.redis.core.*;
+import org.springframework.util.CollectionUtils;
+
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 
-import com.alibaba.fastjson.JSONObject;
-import com.genersoft.iot.vmp.utils.SpringBeanFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.*;
-import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-
 /**    
- * @description:Redis宸ュ叿绫�
- * @author: swwheihei
- * @date:   2020骞�5鏈�6鏃� 涓嬪崍8:27:29     
+ * Redis宸ュ叿绫�
+ * @author swwheihei
+ * @date 2020骞�5鏈�6鏃� 涓嬪崍8:27:29
  */
 @SuppressWarnings(value = {"rawtypes", "unchecked"})
 public class RedisUtil {
@@ -21,9 +19,9 @@
     private static RedisTemplate redisTemplate;
 
     static {
-        redisTemplate = (RedisTemplate)SpringBeanFactory.getBean("redisTemplate");
+        redisTemplate = SpringBeanFactory.getBean("redisTemplate");
     }
-	
+
 	/**
      * 鎸囧畾缂撳瓨澶辨晥鏃堕棿
      * @param key 閿�
@@ -31,13 +29,16 @@
      * @return true / false
      */
     public static boolean expire(String key, long time) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             if (time > 0) {
                 redisTemplate.expire(key, time, TimeUnit.SECONDS);
             }
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return false;
         }
     }
@@ -45,9 +46,11 @@
     /**
      * 鏍规嵁 key 鑾峰彇杩囨湡鏃堕棿
      * @param key 閿�
-     * @return
      */
     public static long getExpire(String key) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         return redisTemplate.getExpire(key, TimeUnit.SECONDS);
     }
 
@@ -57,10 +60,13 @@
      * @return true / false
      */
     public static boolean hasKey(String key) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             return redisTemplate.hasKey(key);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return false;
         }
     }
@@ -71,6 +77,9 @@
      * @param key 閿紙涓�涓垨鑰呭涓級
      */
     public static boolean del(String... key) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
     	try {
     		if (key != null && key.length > 0) {
                 if (key.length == 1) {
@@ -82,7 +91,7 @@
             }
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return false;
         }
     }
@@ -95,6 +104,9 @@
      * @return 鍊�
      */
     public static Object get(String key) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         return key == null ? null : redisTemplate.opsForValue().get(key);
     }
 
@@ -105,11 +117,14 @@
      * @return true / false
      */
     public static boolean set(String key, Object value) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             redisTemplate.opsForValue().set(key, value);
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return false;
         }
     }
@@ -122,6 +137,9 @@
      * @return true / false
      */
     public static boolean set(String key, Object value, long time) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             if (time > 0) {
                 redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
@@ -130,7 +148,7 @@
             }
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return false;
         }
     }
@@ -142,6 +160,9 @@
      * @return
      */
     public static long incr(String key, long delta) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         if (delta < 0) {
             throw new RuntimeException("閫掑鍥犲瓙蹇呴』澶т簬 0");
         }
@@ -155,6 +176,9 @@
      * @return
      */
     public static long decr(String key, long delta) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         if (delta < 0) {
             throw new RuntimeException("閫掑噺鍥犲瓙蹇呴』澶т簬 0");
         }
@@ -170,6 +194,9 @@
      * @return 鍊�
      */
     public static Object hget(String key, String item) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         return redisTemplate.opsForHash().get(key, item);
     }
 
@@ -179,6 +206,9 @@
      * @return 瀵瑰簲鐨勫涓敭鍊�
      */
     public static Map<Object, Object> hmget(String key) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         return redisTemplate.opsForHash().entries(key);
     }
 
@@ -189,11 +219,14 @@
      * @return true / false
      */
     public static boolean hmset(String key, Map<Object, Object> map) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             redisTemplate.opsForHash().putAll(key, map);
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return false;
         }
     }
@@ -205,7 +238,10 @@
      * @param time 鏃堕棿
      * @return true / false
      */
-    public static boolean hmset(String key, Map<Object, Object> map, long time) {
+    public static boolean hmset(String key, Map<?, ?> map, long time) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             redisTemplate.opsForHash().putAll(key, map);
             if (time > 0) {
@@ -213,7 +249,7 @@
             }
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return false;
         }
     }
@@ -226,11 +262,14 @@
      * @return true / false
      */
     public static boolean hset(String key, String item, Object value) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             redisTemplate.opsForHash().put(key, item, value);
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return false;
         }
     }
@@ -244,6 +283,9 @@
      * @return true / false
      */
     public static boolean hset(String key, String item, Object value, long time) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             redisTemplate.opsForHash().put(key, item, value);
             if (time > 0) {
@@ -251,7 +293,7 @@
             }
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return false;
         }
     }
@@ -262,6 +304,9 @@
      * @param item 椤癸紙鍙互澶氫釜锛宯o null锛�
      */
     public static void hdel(String key, Object... item) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         redisTemplate.opsForHash().delete(key, item);
     }
 
@@ -272,6 +317,9 @@
      * @return true / false
      */
     public static boolean hHasKey(String key, String item) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         return redisTemplate.opsForHash().hasKey(key, item);
     }
 
@@ -283,6 +331,9 @@
      * @return
      */
     public static Double hincr(String key, String item, Double by) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         return redisTemplate.opsForHash().increment(key, item, by);
     }
 
@@ -294,6 +345,9 @@
      * @return
      */
     public static Double hdecr(String key, String item, Double by) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         return redisTemplate.opsForHash().increment(key, item, -by);
     }
 
@@ -305,10 +359,13 @@
      * @return 鍊�
      */
     public static Set<Object> sGet(String key) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             return redisTemplate.opsForSet().members(key);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return null;
         }
     }
@@ -320,10 +377,13 @@
      * @return true / false
      */
     public static boolean sHasKey(String key, Object value) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             return redisTemplate.opsForSet().isMember(key, value);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return false;
         }
     }
@@ -335,10 +395,13 @@
      * @return 鎴愬姛涓暟
      */
     public static long sSet(String key, Object... values) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             return redisTemplate.opsForSet().add(key, values);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return 0;
         }
     }
@@ -351,6 +414,9 @@
      * @return 鎴愬姛鏀惧叆涓暟
      */
     public static long sSet(String key, long time, Object... values) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             long count = redisTemplate.opsForSet().add(key, values);
             if (time > 0) {
@@ -358,7 +424,7 @@
             }
             return count;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return 0;
         }
     }
@@ -369,10 +435,13 @@
      * @return 闀垮害
      */
     public static long sGetSetSize(String key) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             return redisTemplate.opsForSet().size(key);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return 0;
         }
     }
@@ -384,10 +453,13 @@
      * @return 鎴愬姛绉婚櫎涓暟
      */
     public static long setRemove(String key, Object... values) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             return redisTemplate.opsForSet().remove(key, values);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return 0;
         }
     }
@@ -401,6 +473,9 @@
      * @param score
      */
     public static void zAdd(Object key, Object value, double score) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         redisTemplate.opsForZSet().add(key, value, score);
     }
 
@@ -411,6 +486,9 @@
      * @param value
      */
     public static void zRemove(Object key, Object value) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         redisTemplate.opsForZSet().remove(key, value);
     }
 
@@ -422,6 +500,9 @@
      * @param delta -1 琛ㄧず鍑� 1 琛ㄧず鍔�1
      */
     public static Double zIncrScore(Object key, Object value, double delta) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         return redisTemplate.opsForZSet().incrementScore(key, value, delta);
     }
 
@@ -433,6 +514,9 @@
      * @return
      */
     public static Double zScore(Object key, Object value) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         return redisTemplate.opsForZSet().score(key, value);
     }
 
@@ -444,6 +528,9 @@
      * @return
      */
     public static Long zRank(Object key, Object value) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         return redisTemplate.opsForZSet().rank(key, value);
     }
 
@@ -454,6 +541,9 @@
      * @return
      */
     public static Long zSize(Object key) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         return redisTemplate.opsForZSet().zCard(key);
     }
 
@@ -467,7 +557,10 @@
      * @param end
      * @return
      */
-    public static Set<Object> ZRange(Object key, int start, int end) {
+    public static Set<Object> zRange(Object key, int start, int end) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         return redisTemplate.opsForZSet().range(key, start, end);
     }
     /**
@@ -479,6 +572,9 @@
      * @return
      */
     public static Set<ZSetOperations.TypedTuple<String>> zRangeWithScore(Object key, int start, int end) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         return redisTemplate.opsForZSet().rangeWithScores(key, start, end);
     }
     /**
@@ -492,6 +588,9 @@
      * @return
      */
     public static Set<String> zRevRange(Object key, int start, int end) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         return redisTemplate.opsForZSet().reverseRange(key, start, end);
     }
     /**
@@ -503,6 +602,9 @@
      * @return
      */
     public static Set<String> zSortRange(Object key, int min, int max) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         return redisTemplate.opsForZSet().rangeByScore(key, min, max);
     }
 
@@ -517,10 +619,13 @@
      * @return
      */
     public static List<Object> lGet(String key, long start, long end) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             return redisTemplate.opsForList().range(key, start, end);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return null;
         }
     }
@@ -531,10 +636,13 @@
      * @return 闀垮害
      */
     public static long lGetListSize(String key) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             return redisTemplate.opsForList().size(key);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return 0;
         }
     }
@@ -548,10 +656,13 @@
      * @return 鍊�
      */
     public static Object lGetIndex(String key, long index) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             return redisTemplate.opsForList().index(key, index);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return null;
         }
     }
@@ -563,11 +674,14 @@
      * @return true / false
      */
     public static boolean lSet(String key, Object value) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             redisTemplate.opsForList().rightPush(key, value);
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return false;
         }
     }
@@ -580,6 +694,9 @@
      * @return true / false
      */
     public static boolean lSet(String key, Object value, long time) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             redisTemplate.opsForList().rightPush(key, value);
             if (time > 0) {
@@ -587,7 +704,7 @@
             }
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return false;
         }
     }
@@ -599,11 +716,14 @@
      * @return true / false
      */
     public static boolean lSetList(String key, List<Object> values) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             redisTemplate.opsForList().rightPushAll(key, values);
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return false;
         }
     }
@@ -616,6 +736,9 @@
      * @return true / false
      */
     public static boolean lSetList(String key, List<Object> values, long time) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             redisTemplate.opsForList().rightPushAll(key, values);
             if (time > 0) {
@@ -623,7 +746,7 @@
             }
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return false;
         }
     }
@@ -636,11 +759,14 @@
      * @return true / false
      */
     public static boolean lUpdateIndex(String key, long index, Object value) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             redisTemplate.opsForList().set(key, index, value);
             return true;
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return false;
         }
     }
@@ -655,10 +781,13 @@
      * @return
      */
     public static long lRemove(String key, long count, Object value) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             return redisTemplate.opsForList().remove(key, count, value);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return 0;
         }
     }
@@ -669,6 +798,9 @@
      * @return
      */
     public static Object lLeftPop(String key) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         return redisTemplate.opsForList().leftPop(key);
     }
 
@@ -678,6 +810,9 @@
      * @return
      */
     public static Object lrightPop(String key) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         return redisTemplate.opsForList().rightPop(key);
     }
 
@@ -687,11 +822,14 @@
      * @return true / false
      */
     public static List<Object> keys(String key) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         try {
             Set<String> set = redisTemplate.keys(key);
             return new ArrayList<>(set);
         } catch (Exception e) {
-            e.printStackTrace();
+            logger.error("鏈鐞嗙殑寮傚父 ", e);
             return null;
         }
     }
@@ -716,7 +854,7 @@
 //            //鍏抽棴cursor
 //            cursor.close();
 //        } catch (Exception e) {
-//            e.printStackTrace();
+//            logger.error("鏈鐞嗙殑寮傚父 ", e);
 //        }
 //        return result;
 //    }
@@ -727,6 +865,9 @@
      * @return
      */
     public static List<Object> scan(String query) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         Set<String> resultKeys = (Set<String>) redisTemplate.execute((RedisCallback<Set<String>>) connection -> {
             ScanOptions scanOptions = ScanOptions.scanOptions().match("*" + query + "*").count(1000).build();
             Cursor<byte[]> scan = connection.scan(scanOptions);
@@ -740,12 +881,19 @@
 
         return new ArrayList<>(resultKeys);
     }
-
+    public static List<Object> scan2(String query) {
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
+        Set<String> keys = redisTemplate.keys(query);
+        return new ArrayList<>(keys);
+    }
     //    ============================== 娑堟伅鍙戦�佷笌璁㈤槄 ==============================
     public static void convertAndSend(String channel, JSONObject msg) {
-//        redisTemplate.convertAndSend(channel, msg);
+        if (redisTemplate == null) {
+            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+        }
         redisTemplate.convertAndSend(channel, msg);
-
     }
 
 }

--
Gitblit v1.8.0