From 1af77ab5f7c11a4b3d59c1989b51b9fca29679ce Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 18 十月 2022 22:18:49 +0800 Subject: [PATCH] Merge pull request #645 from IKangXu/wvp-28181-2.0 --- src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java | 298 +++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 217 insertions(+), 81 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 8ab0672..749dddd 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 @@ -4,30 +4,35 @@ import java.util.concurrent.TimeUnit; import com.alibaba.fastjson.JSONObject; -import org.springframework.beans.factory.annotation.Autowired; +import com.genersoft.iot.vmp.utils.SpringBeanFactory; +import gov.nist.javax.sip.stack.UDPMessageChannel; 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 */ -@Component @SuppressWarnings(value = {"rawtypes", "unchecked"}) public class RedisUtil { - @Autowired - private RedisTemplate redisTemplate; - + private static RedisTemplate redisTemplate; + + static { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } + /** * 鎸囧畾缂撳瓨澶辨晥鏃堕棿 * @param key 閿� * @param time 鏃堕棿锛堢锛� * @return true / false */ - public boolean expire(String key, long time) { + 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); @@ -42,9 +47,11 @@ /** * 鏍规嵁 key 鑾峰彇杩囨湡鏃堕棿 * @param key 閿� - * @return */ - public long getExpire(String key) { + public static long getExpire(String key) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } return redisTemplate.getExpire(key, TimeUnit.SECONDS); } @@ -53,7 +60,10 @@ * @param key 閿� * @return true / false */ - public boolean hasKey(String key) { + public static boolean hasKey(String key) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } try { return redisTemplate.hasKey(key); } catch (Exception e) { @@ -67,7 +77,10 @@ * @SuppressWarnings("unchecked") 蹇界暐绫诲瀷杞崲璀﹀憡 * @param key 閿紙涓�涓垨鑰呭涓級 */ - public boolean del(String... 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) { @@ -91,7 +104,10 @@ * @param key 閿� * @return 鍊� */ - public Object get(String key) { + public static Object get(String key) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } return key == null ? null : redisTemplate.opsForValue().get(key); } @@ -101,7 +117,10 @@ * @param value 鍊� * @return true / false */ - public boolean set(String key, Object value) { + public static boolean set(String key, Object value) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } try { redisTemplate.opsForValue().set(key, value); return true; @@ -118,7 +137,10 @@ * @param time 鏃堕棿锛堢锛夛紝濡傛灉 time < 0 鍒欒缃棤闄愭椂闂� * @return true / false */ - public boolean set(String key, Object value, long time) { + 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); @@ -138,7 +160,10 @@ * @param delta 閫掑澶у皬 * @return */ - public long incr(String key, long delta) { + public static long incr(String key, long delta) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } if (delta < 0) { throw new RuntimeException("閫掑鍥犲瓙蹇呴』澶т簬 0"); } @@ -151,7 +176,10 @@ * @param delta 閫掑噺澶у皬 * @return */ - public long decr(String key, long delta) { + public static long decr(String key, long delta) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } if (delta < 0) { throw new RuntimeException("閫掑噺鍥犲瓙蹇呴』澶т簬 0"); } @@ -166,7 +194,10 @@ * @param item 椤癸紙no null锛� * @return 鍊� */ - public Object hget(String key, String item) { + public static Object hget(String key, String item) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } return redisTemplate.opsForHash().get(key, item); } @@ -175,7 +206,10 @@ * @param key 閿紙no null锛� * @return 瀵瑰簲鐨勫涓敭鍊� */ - public Map<Object, Object> hmget(String key) { + public static Map<Object, Object> hmget(String key) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } return redisTemplate.opsForHash().entries(key); } @@ -185,7 +219,10 @@ * @param map 鍊� * @return true / false */ - public boolean hmset(String key, Map<Object, Object> map) { + 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; @@ -202,7 +239,10 @@ * @param time 鏃堕棿 * @return true / false */ - public boolean hmset(String key, Map<Object, Object> map, long time) { + public static boolean hmset(String key, Map<Object, Object> map, long time) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } try { redisTemplate.opsForHash().putAll(key, map); if (time > 0) { @@ -222,7 +262,10 @@ * @param value 鍊� * @return true / false */ - public boolean hset(String key, String item, Object value) { + 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; @@ -240,7 +283,10 @@ * @param time 鏃堕棿锛堝鏋滃師鏉ョ殑 Hash琛� 璁剧疆浜嗘椂闂达紝杩欓噷浼氳鐩栵級 * @return true / false */ - public boolean hset(String key, String item, Object value, long time) { + 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) { @@ -258,7 +304,10 @@ * @param key 閿� * @param item 椤癸紙鍙互澶氫釜锛宯o null锛� */ - public void hdel(String key, Object... item) { + public static void hdel(String key, Object... item) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } redisTemplate.opsForHash().delete(key, item); } @@ -268,7 +317,10 @@ * @param item 鍊硷紙no null锛� * @return true / false */ - public boolean hHasKey(String key, String item) { + public static boolean hHasKey(String key, String item) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } return redisTemplate.opsForHash().hasKey(key, item); } @@ -279,7 +331,10 @@ * @param by 閫掑澶у皬 > 0 * @return */ - public Double hincr(String key, String item, Double by) { + public static Double hincr(String key, String item, Double by) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } return redisTemplate.opsForHash().increment(key, item, by); } @@ -290,7 +345,10 @@ * @param by 閫掑噺澶у皬 * @return */ - public Double hdecr(String key, String item, Double by) { + public static Double hdecr(String key, String item, Double by) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } return redisTemplate.opsForHash().increment(key, item, -by); } @@ -301,7 +359,10 @@ * @param key 閿� * @return 鍊� */ - public Set<Object> sGet(String key) { + public static Set<Object> sGet(String key) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } try { return redisTemplate.opsForSet().members(key); } catch (Exception e) { @@ -316,7 +377,10 @@ * @param value 鍊� * @return true / false */ - public boolean sHasKey(String key, Object value) { + 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) { @@ -331,7 +395,10 @@ * @param values 鍊硷紙鍙互澶氫釜锛� * @return 鎴愬姛涓暟 */ - public long sSet(String key, Object... values) { + 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) { @@ -347,7 +414,10 @@ * @param values 鍊硷紙鍙互澶氫釜锛� * @return 鎴愬姛鏀惧叆涓暟 */ - public long sSet(String key, long time, Object... values) { + 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) { @@ -365,7 +435,10 @@ * @param key 閿� * @return 闀垮害 */ - public long sGetSetSize(String key) { + public static long sGetSetSize(String key) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } try { return redisTemplate.opsForSet().size(key); } catch (Exception e) { @@ -380,7 +453,10 @@ * @param values 鍊� * @return 鎴愬姛绉婚櫎涓暟 */ - public long setRemove(String key, Object... values) { + 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) { @@ -397,7 +473,10 @@ * @param value * @param score */ - public void zAdd(Object key, Object value, double score) { + public static void zAdd(Object key, Object value, double score) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } redisTemplate.opsForZSet().add(key, value, score); } @@ -407,7 +486,10 @@ * @param key * @param value */ - public void zRemove(Object key, Object value) { + public static void zRemove(Object key, Object value) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } redisTemplate.opsForZSet().remove(key, value); } @@ -418,7 +500,10 @@ * @param value * @param delta -1 琛ㄧず鍑� 1 琛ㄧず鍔�1 */ - public Double zIncrScore(Object key, Object value, double delta) { + public static Double zIncrScore(Object key, Object value, double delta) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } return redisTemplate.opsForZSet().incrementScore(key, value, delta); } @@ -429,7 +514,10 @@ * @param value * @return */ - public Double zScore(Object key, Object value) { + public static Double zScore(Object key, Object value) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } return redisTemplate.opsForZSet().score(key, value); } @@ -440,7 +528,10 @@ * @param value * @return */ - public Long zRank(Object key, Object value) { + public static Long zRank(Object key, Object value) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } return redisTemplate.opsForZSet().rank(key, value); } @@ -450,7 +541,10 @@ * @param key * @return */ - public Long zSize(Object key) { + public static Long zSize(Object key) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } return redisTemplate.opsForZSet().zCard(key); } @@ -464,7 +558,10 @@ * @param end * @return */ - public 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); } /** @@ -475,7 +572,10 @@ * @param end * @return */ - public Set<ZSetOperations.TypedTuple<String>> zRangeWithScore(Object key, int start, int end) { + 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); } /** @@ -488,7 +588,10 @@ * @param end * @return */ - public Set<String> zRevRange(Object key, int start, int end) { + 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); } /** @@ -499,7 +602,10 @@ * @param max * @return */ - public Set<String> zSortRange(Object key, int min, int max) { + 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); } @@ -513,7 +619,10 @@ * @param end 缁撴潫锛�0 鍒� -1 浠h〃鎵�鏈夊�硷級 * @return */ - public List<Object> lGet(String key, long start, long end) { + 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) { @@ -527,7 +636,10 @@ * @param key 閿� * @return 闀垮害 */ - public long lGetListSize(String key) { + public static long lGetListSize(String key) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } try { return redisTemplate.opsForList().size(key); } catch (Exception e) { @@ -544,7 +656,10 @@ * 褰� index < 0 鏃� {-1:琛ㄥ熬, -2:鍊掓暟绗簩涓厓绱爙 * @return 鍊� */ - public Object lGetIndex(String key, long index) { + 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) { @@ -559,7 +674,10 @@ * @param value 鍊� * @return true / false */ - public boolean lSet(String key, Object value) { + public static boolean lSet(String key, Object value) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } try { redisTemplate.opsForList().rightPush(key, value); return true; @@ -576,7 +694,10 @@ * @param time 鏃堕棿 * @return true / false */ - public boolean lSet(String key, Object value, long time) { + 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) { @@ -595,7 +716,10 @@ * @param values 鍊� * @return true / false */ - public boolean lSetList(String key, List<Object> values) { + public static boolean lSetList(String key, List<Object> values) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } try { redisTemplate.opsForList().rightPushAll(key, values); return true; @@ -612,7 +736,10 @@ * @param time 鏃堕棿 * @return true / false */ - public boolean lSetList(String key, List<Object> values, long time) { + 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) { @@ -632,7 +759,10 @@ * @param value 鍊� * @return true / false */ - public boolean lUpdateIndex(String key, long index, Object value) { + 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; @@ -651,7 +781,10 @@ * @param value * @return */ - public long lRemove(String key, long count, Object value) { + 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) { @@ -665,7 +798,10 @@ * @param key 閿� * @return */ - public Object lLeftPop(String key) { + public static Object lLeftPop(String key) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } return redisTemplate.opsForList().leftPop(key); } @@ -674,7 +810,10 @@ * @param key 閿� * @return */ - public Object lrightPop(String key) { + public static Object lrightPop(String key) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } return redisTemplate.opsForList().rightPop(key); } @@ -683,7 +822,10 @@ * @param key 閿� * @return true / false */ - public List<Object> keys(String key) { + 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); @@ -699,7 +841,7 @@ * @param query 鏌ヨ鍙傛暟 * @return */ -// public List<Object> scan(String query) { +// public static List<Object> scan(String query) { // List<Object> result = new ArrayList<>(); // try { // Cursor<Map.Entry<Object,Object>> cursor = redisTemplate.opsForHash().scan("field", @@ -723,36 +865,30 @@ * @param query 鏌ヨ鍙傛暟 * @return */ - public List<Object> scan(String query) { - Set<String> keys = (Set<String>) redisTemplate.execute((RedisCallback<Set<String>>) connection -> { - Set<String> keysTmp = new HashSet<>(); - Cursor<byte[]> cursor = connection.scan(new ScanOptions.ScanOptionsBuilder().match(query).count(1000).build()); - while (cursor.hasNext()) { - keysTmp.add(new String(cursor.next())); + 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); + Set<String> keys = new HashSet<>(); + while (scan.hasNext()) { + byte[] next = scan.next(); + keys.add(new String(next)); } - return keysTmp; + return keys; }); -// Set<String> keys = (Set<String>) redisTemplate.execute(new RedisCallback<Set<String>>(){ -// -// @Override -// public Set<String> doInRedis(RedisConnection connection) throws DataAccessException { -// Set<String> keysTmp = new HashSet<>(); -// Cursor<byte[]> cursor = connection.scan(new ScanOptions.ScanOptionsBuilder().match(query).count(1000).build()); -// while (cursor.hasNext()) { -// keysTmp.add(new String(cursor.next())); -// } -// return keysTmp; -// } -// }); - return new ArrayList<>(keys); + return new ArrayList<>(resultKeys); } // ============================== 娑堟伅鍙戦�佷笌璁㈤槄 ============================== - public void convertAndSend(String channel, JSONObject msg) { -// redisTemplate.convertAndSend(channel, msg); + public static void convertAndSend(String channel, JSONObject msg) { + if (redisTemplate == null) { + redisTemplate = SpringBeanFactory.getBean("redisTemplate"); + } redisTemplate.convertAndSend(channel, msg); - } } -- Gitblit v1.8.0