| | |
| | | //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; |
| | | } |
| | | |
| | | } |