From 81a6a662b5db806e0824f311a89993d853db9371 Mon Sep 17 00:00:00 2001 From: huangzhen <867127663@qq.com> Date: 星期四, 13 十月 2022 16:15:46 +0800 Subject: [PATCH] 新增前端获取危险单元名称和编码、加入redis缓存 --- src/main/java/com/ruoyi/doublePrevention/config/redis/RedisUtils.java | 531 ++++++++++++++++++++++++++++++----------------------------- 1 files changed, 270 insertions(+), 261 deletions(-) diff --git a/src/main/java/com/ruoyi/doublePrevention/config/redis/RedisUtils.java b/src/main/java/com/ruoyi/doublePrevention/config/redis/RedisUtils.java index 2ea8c61..a97e3f0 100644 --- a/src/main/java/com/ruoyi/doublePrevention/config/redis/RedisUtils.java +++ b/src/main/java/com/ruoyi/doublePrevention/config/redis/RedisUtils.java @@ -1,261 +1,270 @@ -//package com.ruoyi.doublePrevention.config.redis; -// -// -//import org.slf4j.Logger; -//import org.slf4j.LoggerFactory; -//import org.springframework.data.redis.connection.RedisClusterConnection; -//import org.springframework.data.redis.connection.RedisClusterNode; -//import org.springframework.data.redis.connection.RedisConnection; -//import org.springframework.data.redis.connection.RedisConnectionFactory; -//import org.springframework.data.redis.connection.jedis.JedisClusterConnection; -//import org.springframework.data.redis.connection.jedis.JedisConnection; -//import org.springframework.data.redis.core.*; -//import org.springframework.stereotype.Repository; -// -//import javax.annotation.PostConstruct; -//import javax.annotation.Resource; -//import java.io.Serializable; -//import java.util.HashSet; -//import java.util.Iterator; -//import java.util.List; -//import java.util.Set; -//import java.util.concurrent.TimeUnit; -// -///** -//* @Description: redis工具类 -//*/ -// -//@Repository("configRedisRepository") -//@SuppressWarnings(value = { "unchecked", "rawtypes" }) -//public class RedisUtils { -// -// -// @Resource -// private RedisTemplate redisTemplate; -// /** -// * logger -// */ -// private final Logger logger = LoggerFactory.getLogger(this.getClass()); -// -// -// @PostConstruct -// public void initRepository(){ -// try { -// this.set("test:module:Web", "testConnection", 60L, TimeUnit.SECONDS); -// logger.info("[ModuleRedis][Web] is connected"); -// } catch (Exception e) { -// logger.error("[ModuleRedis][Web] connected failed!!"); -// } -// } -// -// /** -// * 写入缓存 -// * @param key -// * @param value -// * @return -// */ -// public boolean set(final String key, Object value) { -// boolean result = false; -// try { -// ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue(); -// operations.set(key, value); -// result = true; -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return result; -// } -// /** -// * 写入缓存设置时效时间 -// * @param key -// * @param value -// * @return -// */ -// public boolean set(final String key, Object value, Long expireTime ,TimeUnit timeUnit) { -// boolean result = false; -// try { -// ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue(); -// operations.set(key, value); -// redisTemplate.expire(key, expireTime, timeUnit); -// result = true; -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return result; -// } -// /** -// * 批量删除对应的value -// * @param keys -// */ -// public void remove(final String... keys) { -// for (String key : keys) { -// remove(key); -// } -// } -// /** -// * 批量删除key -// * @param pattern -// */ -// public void removePattern(final String pattern) { -// Set<Serializable> keys = redisTemplate.keys(pattern); -// if (keys.size() > 0){ -// redisTemplate.delete(keys); -// } -// } -// /** -// * 删除对应的value -// * @param key -// */ -// public void remove(final String key) { -// if (exists(key)) { -// redisTemplate.delete(key); -// } -// } -// /** -// * 判断缓存中是否有对应的value -// * @param key -// * @return -// */ -// public boolean exists(final String key) { -// return redisTemplate.hasKey(key); -// } -// /** -// * 读取缓存 -// * @param key -// * @return -// */ -// public Object get(final String key) { -// Object result = null; -// ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue(); -// result = operations.get(key); -// return result; -// } -// /** -// * 哈希 添加 -// * @param key -// * @param hashKey -// * @param value -// */ -// public void hmSet(String key, Object hashKey, Object value){ -// HashOperations<String, Object, Object> hash = redisTemplate.opsForHash(); -// hash.put(key,hashKey,value); -// } -// /** -// * 哈希获取数据 -// * @param key -// * @param hashKey -// * @return -// */ -// public Object hmGet(String key, Object hashKey){ -// HashOperations<String, Object, Object> hash = redisTemplate.opsForHash(); -// return hash.get(key,hashKey); -// } -// /** -// * 列表添加 -// * @param k -// * @param v -// */ -// public void lPush(String k,Object v){ -// ListOperations<String, Object> list = redisTemplate.opsForList(); -// list.rightPush(k,v); -// } -// /** -// * 列表获取 -// * @param k -// * @param l -// * @param l1 -// * @return -// */ -// public List<Object> lRange(String k, long l, long l1){ -// ListOperations<String, Object> list = redisTemplate.opsForList(); -// return list.range(k,l,l1); -// } -// /** -// * 集合添加 -// * @param key -// * @param value -// */ -// public void add(String key,Object value){ -// SetOperations<String, Object> set = redisTemplate.opsForSet(); -// set.add(key,value); -// } -// /** -// * 集合获取 -// * @param key -// * @return -// */ -// public Set<Object> setMembers(String key){ -// SetOperations<String, Object> set = redisTemplate.opsForSet(); -// return set.members(key); -// } -// /** -// * 有序集合添加 -// * @param key -// * @param value -// * @param scoure -// */ -// public void zAdd(String key,Object value,double scoure){ -// ZSetOperations<String, Object> zset = redisTemplate.opsForZSet(); -// zset.add(key,value,scoure); -// } -// /** -// * 有序集合获取 -// * @param key -// * @param scoure -// * @param scoure1 -// * @return -// */ -// public Set<Object> rangeByScore(String key,double scoure,double scoure1){ -// ZSetOperations<String, Object> zset = redisTemplate.opsForZSet(); -// return zset.rangeByScore(key, scoure, scoure1); -// } -// -// /** -// * @Description: 获取过期时间 返回 秒 -// */ -// -// public Long getExpireTime(String key) { -// return redisTemplate.getExpire(key, TimeUnit.SECONDS); -// } -// -// -// /** -// * @Description: 重置key 的 过期时间 -// */ -// public void resetKeyExpireTime(String key, Long seconds) { -// redisTemplate.expire(key, seconds, TimeUnit.SECONDS); -// } -// -// public Set<String> scanMatch(String matchKey) { -// Set<String> keys = new HashSet(); -// RedisConnectionFactory connectionFactory = redisTemplate.getConnectionFactory(); -// RedisConnection redisConnection = connectionFactory.getConnection(); -// Cursor<byte[]> scan = null; -// if(redisConnection instanceof JedisClusterConnection){ -// RedisClusterConnection clusterConnection = connectionFactory.getClusterConnection(); -// Iterable<RedisClusterNode> redisClusterNodes = clusterConnection.clusterGetNodes(); -// Iterator<RedisClusterNode> iterator = redisClusterNodes.iterator(); -// while (iterator.hasNext()) { -// RedisClusterNode next = iterator.next(); -// scan = clusterConnection.scan(next, ScanOptions.scanOptions().match(matchKey).count(Integer.MAX_VALUE).build()); -// while (scan.hasNext()) { -// keys.add(new String(scan.next())); -// } -// scan.close(); -// } -// return keys; -// } -// if(redisConnection instanceof JedisConnection){ -// scan = redisConnection.scan(ScanOptions.scanOptions().match(matchKey).count(Integer.MAX_VALUE).build()); -// while (scan.hasNext()){ -// //找到一次就添加一次 -// keys.add(new String(scan.next())); -// } -// scan.close(); -// return keys; -// } -// -// return keys; -//} -// -//} +package com.ruoyi.doublePrevention.config.redis; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.data.redis.connection.RedisClusterConnection; +import org.springframework.data.redis.connection.RedisClusterNode; +import org.springframework.data.redis.connection.RedisConnection; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.jedis.JedisClusterConnection; +import org.springframework.data.redis.connection.jedis.JedisConnection; +import org.springframework.data.redis.core.*; +import org.springframework.stereotype.Repository; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.io.IOException; +import java.io.Serializable; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +/** +* @Description: redis工具类 +*/ + +@Repository("configRedisRepository") +@SuppressWarnings(value = { "unchecked", "rawtypes" }) +public class RedisUtils { + + + @Resource + private RedisTemplate redisTemplate; + /** + * logger + */ + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + + @PostConstruct + public void initRepository(){ + try { + this.set("test:module:Web", "testConnection", 60L, TimeUnit.SECONDS); + logger.info("[ModuleRedis][Web] is connected"); + } catch (Exception e) { + logger.error("[ModuleRedis][Web] connected failed!!"); + } + } + + /** + * 写入缓存 + * @param key + * @param value + * @return + */ + public boolean set(final String key, Object value) { + boolean result = false; + try { + ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue(); + operations.set(key, value); + result = true; + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + /** + * 写入缓存设置时效时间 + * @param key + * @param value + * @return + */ + public boolean set(final String key, Object value, Long expireTime ,TimeUnit timeUnit) { + boolean result = false; + try { + ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue(); + operations.set(key, value); + redisTemplate.expire(key, expireTime, timeUnit); + result = true; + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + /** + * 批量删除对应的value + * @param keys + */ + public void remove(final String... keys) { + for (String key : keys) { + remove(key); + } + } + /** + * 批量删除key + * @param pattern + */ + public void removePattern(final String pattern) { + Set<Serializable> keys = redisTemplate.keys(pattern); + if (keys.size() > 0){ + redisTemplate.delete(keys); + } + } + /** + * 删除对应的value + * @param key + */ + public void remove(final String key) { + if (exists(key)) { + redisTemplate.delete(key); + } + } + /** + * 判断缓存中是否有对应的value + * @param key + * @return + */ + public boolean exists(final String key) { + return redisTemplate.hasKey(key); + } + /** + * 读取缓存 + * @param key + * @return + */ + public Object get(final String key) { + Object result = null; + ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue(); + result = operations.get(key); + return result; + } + /** + * 哈希 添加 + * @param key + * @param hashKey + * @param value + */ + public void hmSet(String key, Object hashKey, Object value){ + HashOperations<String, Object, Object> hash = redisTemplate.opsForHash(); + hash.put(key,hashKey,value); + } + /** + * 哈希获取数据 + * @param key + * @param hashKey + * @return + */ + public Object hmGet(String key, Object hashKey){ + HashOperations<String, Object, Object> hash = redisTemplate.opsForHash(); + return hash.get(key,hashKey); + } + /** + * 列表添加 + * @param k + * @param v + */ + public void lPush(String k,Object v){ + ListOperations<String, Object> list = redisTemplate.opsForList(); + list.rightPush(k,v); + } + /** + * 列表获取 + * @param k + * @param l + * @param l1 + * @return + */ + public List<Object> lRange(String k, long l, long l1){ + ListOperations<String, Object> list = redisTemplate.opsForList(); + return list.range(k,l,l1); + } + /** + * 集合添加 + * @param key + * @param value + */ + public void add(String key,Object value){ + SetOperations<String, Object> set = redisTemplate.opsForSet(); + set.add(key,value); + } + /** + * 集合获取 + * @param key + * @return + */ + public Set<Object> setMembers(String key){ + SetOperations<String, Object> set = redisTemplate.opsForSet(); + return set.members(key); + } + /** + * 有序集合添加 + * @param key + * @param value + * @param scoure + */ + public void zAdd(String key,Object value,double scoure){ + ZSetOperations<String, Object> zset = redisTemplate.opsForZSet(); + zset.add(key,value,scoure); + } + /** + * 有序集合获取 + * @param key + * @param scoure + * @param scoure1 + * @return + */ + public Set<Object> rangeByScore(String key,double scoure,double scoure1){ + ZSetOperations<String, Object> zset = redisTemplate.opsForZSet(); + return zset.rangeByScore(key, scoure, scoure1); + } + + /** + * @Description: 获取过期时间 返回 秒 + */ + + public Long getExpireTime(String key) { + return redisTemplate.getExpire(key, TimeUnit.SECONDS); + } + + + /** + * @Description: 重置key 的 过期时间 + */ + public void resetKeyExpireTime(String key, Long seconds) { + redisTemplate.expire(key, seconds, TimeUnit.SECONDS); + } + + public Set<String> scanMatch(String matchKey) { + Set<String> keys = new HashSet(); + RedisConnectionFactory connectionFactory = redisTemplate.getConnectionFactory(); + RedisConnection redisConnection = connectionFactory.getConnection(); + Cursor<byte[]> scan = null; + if(redisConnection instanceof JedisClusterConnection){ + RedisClusterConnection clusterConnection = connectionFactory.getClusterConnection(); + Iterable<RedisClusterNode> redisClusterNodes = clusterConnection.clusterGetNodes(); + Iterator<RedisClusterNode> iterator = redisClusterNodes.iterator(); + while (iterator.hasNext()) { + RedisClusterNode next = iterator.next(); + scan = clusterConnection.scan(next, ScanOptions.scanOptions().match(matchKey).count(Integer.MAX_VALUE).build()); + while (scan.hasNext()) { + keys.add(new String(scan.next())); + } + try { + scan.close(); + } catch (IOException e) { + throw new RuntimeException("scanMatch关闭失败"); + } + } + return keys; + } + if(redisConnection instanceof JedisConnection){ + scan = redisConnection.scan(ScanOptions.scanOptions().match(matchKey).count(Integer.MAX_VALUE).build()); + while (scan.hasNext()){ + //找到一次就添加一次 + keys.add(new String(scan.next())); + } + try { + scan.close(); + } catch (IOException e) { + throw new RuntimeException("scanMatch关闭失败"); + } + return keys; + } + + return keys; +} + +} -- Gitblit v1.9.2