From 43105be63e02a447916c56d1b9707e02f7fa4d62 Mon Sep 17 00:00:00 2001 From: songhuangfeng123 <shf18767906695@163.com> Date: 星期二, 05 七月 2022 09:10:53 +0800 Subject: [PATCH] Merge branches 'genchuang' and 'master' of https://sinanoaq.cn:8888/r/safePlatform-out into genchuang --- safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/redis/RedisUtils.java | 261 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 261 insertions(+), 0 deletions(-) diff --git a/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/redis/RedisUtils.java b/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/redis/RedisUtils.java new file mode 100644 index 0000000..d185143 --- /dev/null +++ b/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/redis/RedisUtils.java @@ -0,0 +1,261 @@ +package com.gkhy.safePlatform.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; +} + +} -- Gitblit v1.9.2