From 5d901b5e3f033e8b04e53420d68626cbd87431c8 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期五, 06 五月 2022 10:12:34 +0800 Subject: [PATCH] 使用阿里代码规范。规范代码写法 --- src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java | 233 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 217 insertions(+), 16 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 0427f8b..8ab0672 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,22 +1,21 @@ package com.genersoft.iot.vmp.utils.redis; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.concurrent.TimeUnit; +import com.alibaba.fastjson.JSONObject; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.*; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; /** - * @Description:Redis宸ュ叿绫� - * @author: songww + * @description:Redis宸ュ叿绫� + * @author: swwheihei * @date: 2020骞�5鏈�6鏃� 涓嬪崍8:27:29 */ @Component +@SuppressWarnings(value = {"rawtypes", "unchecked"}) public class RedisUtil { @Autowired @@ -68,14 +67,20 @@ * @SuppressWarnings("unchecked") 蹇界暐绫诲瀷杞崲璀﹀憡 * @param key 閿紙涓�涓垨鑰呭涓級 */ - public void del(String... key) { - if (key != null && key.length > 0) { - if (key.length == 1) { - redisTemplate.delete(key[0]); - } else { -// 浼犲叆涓�涓� Collection<String> 闆嗗悎 - redisTemplate.delete(CollectionUtils.arrayToList(key)); + public boolean del(String... key) { + try { + if (key != null && key.length > 0) { + if (key.length == 1) { + redisTemplate.delete(key[0]); + } else { +// 浼犲叆涓�涓� Collection<String> 闆嗗悎 + redisTemplate.delete(CollectionUtils.arrayToList(key)); + } } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; } } @@ -383,6 +388,121 @@ return 0; } } +// ============================== ZSet ============================== + + /** + * 娣诲姞涓�涓厓绱�, zset涓巗et鏈�澶х殑鍖哄埆灏辨槸姣忎釜鍏冪礌閮芥湁涓�涓猻core锛屽洜姝ゆ湁涓帓搴忕殑杈呭姪鍔熻兘; zadd + * + * @param key + * @param value + * @param score + */ + public void zAdd(Object key, Object value, double score) { + redisTemplate.opsForZSet().add(key, value, score); + } + + /** + * 鍒犻櫎鍏冪礌 zrem + * + * @param key + * @param value + */ + public void zRemove(Object key, Object value) { + redisTemplate.opsForZSet().remove(key, value); + } + + /** + * score鐨勫鍔爋r鍑忓皯 zincrby + * + * @param key + * @param value + * @param delta -1 琛ㄧず鍑� 1 琛ㄧず鍔�1 + */ + public Double zIncrScore(Object key, Object value, double delta) { + return redisTemplate.opsForZSet().incrementScore(key, value, delta); + } + + /** + * 鏌ヨvalue瀵瑰簲鐨剆core zscore + * + * @param key + * @param value + * @return + */ + public Double zScore(Object key, Object value) { + return redisTemplate.opsForZSet().score(key, value); + } + + /** + * 鍒ゆ柇value鍦▃set涓殑鎺掑悕 zrank + * + * @param key + * @param value + * @return + */ + public Long zRank(Object key, Object value) { + return redisTemplate.opsForZSet().rank(key, value); + } + + /** + * 杩斿洖闆嗗悎鐨勯暱搴� + * + * @param key + * @return + */ + public Long zSize(Object key) { + return redisTemplate.opsForZSet().zCard(key); + } + + /** + * 鏌ヨ闆嗗悎涓寚瀹氶『搴忕殑鍊硷紝 0 -1 琛ㄧず鑾峰彇鍏ㄩ儴鐨勯泦鍚堝唴瀹� zrange + * + * 杩斿洖鏈夊簭鐨勯泦鍚堬紝score灏忕殑鍦ㄥ墠闈� + * + * @param key + * @param start + * @param end + * @return + */ + public Set<Object> ZRange(Object key, int start, int end) { + return redisTemplate.opsForZSet().range(key, start, end); + } + /** + * 鏌ヨ闆嗗悎涓寚瀹氶『搴忕殑鍊煎拰score锛�0, -1 琛ㄧず鑾峰彇鍏ㄩ儴鐨勯泦鍚堝唴瀹� + * + * @param key + * @param start + * @param end + * @return + */ + public Set<ZSetOperations.TypedTuple<String>> zRangeWithScore(Object key, int start, int end) { + return redisTemplate.opsForZSet().rangeWithScores(key, start, end); + } + /** + * 鏌ヨ闆嗗悎涓寚瀹氶『搴忕殑鍊� zrevrange + * + * 杩斿洖鏈夊簭鐨勯泦鍚堜腑锛宻core澶х殑鍦ㄥ墠闈� + * + * @param key + * @param start + * @param end + * @return + */ + public Set<String> zRevRange(Object key, int start, int end) { + return redisTemplate.opsForZSet().reverseRange(key, start, end); + } + /** + * 鏍规嵁score鐨勫�硷紝鏉ヨ幏鍙栨弧瓒虫潯浠剁殑闆嗗悎 zrangebyscore + * + * @param key + * @param min + * @param max + * @return + */ + public Set<String> zSortRange(Object key, int min, int max) { + return redisTemplate.opsForZSet().rangeByScore(key, min, max); + } + // ============================== List ============================== @@ -539,7 +659,25 @@ return 0; } } - + + /** + * 鍦ㄩ敭涓� key 鐨� list涓Щ闄ょ涓�涓厓绱� + * @param key 閿� + * @return + */ + public Object lLeftPop(String key) { + return redisTemplate.opsForList().leftPop(key); + } + + /** + * 鍦ㄩ敭涓� key 鐨� list涓Щ闄ゃ�佹渶鍚庝竴涓厓绱� + * @param key 閿� + * @return + */ + public Object lrightPop(String key) { + return redisTemplate.opsForList().rightPop(key); + } + /** * 妯$硦鏌ヨ * @param key 閿� @@ -547,11 +685,74 @@ */ public List<Object> keys(String key) { try { - Set<String> set = redisTemplate.keys(key); + Set<String> set = redisTemplate.keys(key); return new ArrayList<>(set); } catch (Exception e) { e.printStackTrace(); return null; } } + + + /** + * 妯$硦鏌ヨ + * @param query 鏌ヨ鍙傛暟 + * @return + */ +// public List<Object> scan(String query) { +// List<Object> result = new ArrayList<>(); +// try { +// Cursor<Map.Entry<Object,Object>> cursor = redisTemplate.opsForHash().scan("field", +// ScanOptions.scanOptions().match(query).count(1000).build()); +// while (cursor.hasNext()) { +// Map.Entry<Object,Object> entry = cursor.next(); +// result.add(entry.getKey()); +// Object key = entry.getKey(); +// Object valueSet = entry.getValue(); +// } +// //鍏抽棴cursor +// cursor.close(); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// return result; +// } + + /** + * 妯$硦鏌ヨ + * @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())); + } + return keysTmp; + }); +// 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); + } + + // ============================== 娑堟伅鍙戦�佷笌璁㈤槄 ============================== + public void convertAndSend(String channel, JSONObject msg) { +// redisTemplate.convertAndSend(channel, msg); + redisTemplate.convertAndSend(channel, msg); + + } + } -- Gitblit v1.8.0