From 2809275eb14deca48f62a28d7f1e604843d1b1da Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@gmail.com> Date: 星期三, 12 二月 2025 22:18:17 +0800 Subject: [PATCH] # --- rsf-common/src/main/java/com/vincent/rsf/common/utils/RedisSupport.java | 609 +++++++++++++++++++++++------------------------------- rsf-common/src/main/java/com/vincent/rsf/common/utils/Serialize.java | 10 2 files changed, 266 insertions(+), 353 deletions(-) diff --git a/rsf-common/src/main/java/com/vincent/rsf/common/utils/RedisSupport.java b/rsf-common/src/main/java/com/vincent/rsf/common/utils/RedisSupport.java index 2c414be..aa90caf 100644 --- a/rsf-common/src/main/java/com/vincent/rsf/common/utils/RedisSupport.java +++ b/rsf-common/src/main/java/com/vincent/rsf/common/utils/RedisSupport.java @@ -1,6 +1,6 @@ package com.vincent.rsf.common.utils; - +import lombok.extern.slf4j.Slf4j; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; @@ -11,26 +11,19 @@ import java.util.Set; /** - * 缂撳瓨鏀寔 + * redis tools * Created by vincent on 2023-03-13 */ +@Slf4j public class RedisSupport { - private static final Map<String, RedisSupport> redis = new HashMap<>(); + private static final Map<String, RedisSupport> REDIS_CACHE = new HashMap<>(); - public static final String defaultRedisFlag = "redis"; + public static final String DEFAULT_FLAG = "redis"; - public static RedisSupport defaultRedisSupport = RedisSupport.getRedis(defaultRedisFlag); + private static final String LINK = "."; - public synchronized static RedisSupport getRedis(String name){ - RedisSupport redisSupport = redis.get(name); - if(redisSupport!=null) { - return redisSupport; - } - redisSupport = new RedisSupport(name); - redis.put(name, redisSupport); - return redisSupport; - } + public static RedisSupport defaultRedisSupport = RedisSupport.getRedis(DEFAULT_FLAG); protected JedisPool pool; @@ -40,413 +33,340 @@ public Boolean initialize = false; + public synchronized static RedisSupport getRedis(String name){ + RedisSupport redisSupport = REDIS_CACHE.get(name); + if (null == redisSupport){ + redisSupport = new RedisSupport(name); + REDIS_CACHE.put(name, redisSupport); + } + return redisSupport; + } + private RedisSupport(String name) { try { boolean bAll = true; String[] configKeys={"host","port","max","min","timeout","index"}; - for(String key:configKeys){ - if(!ConfigHelper.contains(name+"."+key)){ - System.err.println(); + for(String key : configKeys){ + if(!ConfigHelper.contains(name + "." + key)){ bAll = false; } } - if(bAll){ + if (bAll) { config = new JedisPoolConfig(); config.setMaxIdle(ConfigHelper.getInteger(name+".min")); config.setMaxWaitMillis(ConfigHelper.getLong(name+".timeout")); - //鍦╞orrow涓�涓猨edis瀹炰緥鏃讹紝鏄惁鎻愬墠杩涜validate鎿嶄綔锛涘鏋滀负true锛屽垯寰楀埌鐨刯edis瀹炰緥鍧囨槸鍙敤鐨勶紱 + // 鍦╞orrow涓�涓猨edis瀹炰緥鏃讹紝鏄惁鎻愬墠杩涜validate鎿嶄綔锛涘鏋滀负true锛屽垯寰楀埌鐨刯edis瀹炰緥鍧囨槸鍙敤鐨勶紱 config.setTestOnBorrow(false); - //褰撳墠jedis杩炴帴鐨勫簱鍙� + // 褰撳墠jedis杩炴帴鐨勫簱鍙� index = ConfigHelper.getInteger(name+".index"); - //瀹炰緥鍖杍edis姹� + // 瀹炰緥鍖杍edis姹� String host = ConfigHelper.getString(name+".host"); int port = ConfigHelper.getInteger(name+".port"); int timeout = ConfigHelper.getInteger(name+".timeout"); String password = ConfigHelper.getString(name+".password"); - JedisPool d ; pool = new JedisPool(config,host , port,timeout,password); - //鍒濆鍖� Jedis jedis = this.getJedis(); this.pool.returnResource(jedis); initialize = true; - }else{ - System.err.println("ERROR - 鍒濆鍖朢eids鏃跺嚭閿欙紝鍦ㄩ厤缃枃浠朵腑鏈壘鍒�"+name+".***灞炴��(host,port,max,min,timeout,index)"); + } else { + log.error("ERROR - 鍒濆鍖朢eids鏃跺嚭閿欙紝鍦ㄩ厤缃枃浠朵腑鏈壘鍒皗}.***灞炴��(host,port,max,min,timeout,index)", name); } - }catch(Exception ex){ - ex.printStackTrace(); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); } } - public Jedis getJedis(){ try{ Jedis jedis = pool.getResource(); - if(this.index!=jedis.getDB().intValue()) + + if(this.index != jedis.getDB().intValue()) { jedis.select(this.index); + } return jedis; - }catch(Exception ex){ - System.err.println(ex.getMessage()); + } catch (Exception e){ + log.error(this.getClass().getSimpleName(), e); } + return null; } - public void retJedis(Jedis jedis){ - if(jedis!=null) - this.pool.returnResource(jedis); - } - - - Date last_console_time = new Date(); - Boolean console = false; - public void console(Object...objects){ - if(!this.initialize)return; - if((new Date().getTime()-last_console_time.getTime())>(1000*30)){ - Jedis jedis = this.getJedis(); - try{ - console = "true".equals(jedis.get("INI.console")); - }catch(Exception ex){ - System.err.println(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); - } - last_console_time = new Date(); - } - if(!console)return; - StringBuilder strConsole = new StringBuilder("REDIS -"); - for(Object object:objects) { - strConsole.append(" ").append(object); - } - System.out.println(strConsole); - } - - - - public Object setMap(String name, String key, Object value) { - if(!this.initialize)return null; - console("set map value",name,key,value); - if(value==null){ - deleteMap(name,key); - return null; - } - Jedis jedis = this.getJedis(); - try{ - jedis.hset(("MAP."+name).getBytes(),key.getBytes(), Serialize.serialize(value)); - }catch(Exception ex){ - //Utils.trace(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); - } - return value; - } - public <T> T getMap(String name, String key) { - if(!this.initialize)return null; - console("get map value",name,key); - Jedis jedis = this.getJedis(); - try{ - byte[] bytes = jedis.hget(("MAP."+name).getBytes(),key.getBytes()); - if(bytes==null||bytes.length==0) - return null; - return (T) Serialize.unSerialize(bytes); - }catch(Exception ex){ - //Utils.trace(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); - } - return null; - } - public Set<String> getMapKeys(String name) { - if(!this.initialize)return null; - console("get map keys",name); - Jedis jedis = this.getJedis(); - try{ - Set<String> keys = jedis.hkeys(("MAP."+name)); - return keys; - }catch(Exception ex){ - //Utils.trace(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); - } - return null; - } - public Long deleteMap(String name, String... key) { - if(!this.initialize)return null; - console("delete value",name,key); - Jedis jedis = this.getJedis(); - try{ - String[] keys=new String[key.length]; - for(int i=0;i<key.length;i++){ - keys[i]=key[i]; - } - Long returnMap = jedis.hdel("MAP."+name, keys); - return returnMap; - }catch(Exception ex){ - //Utils.trace(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); - } - return null; - } - public Long clearMap(String name) { - if(!this.initialize)return null; - console("clear value",name); - Jedis jedis = this.getJedis(); - try{ - return jedis.del("MAP."+name); - }catch(Exception ex){ - //Utils.trace(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); - } - return null; - } - public void setMapExpire(String name,int seconds){ - if(!this.initialize)return; - Jedis jedis = this.getJedis(); - try{ - jedis.expire(("MAP."+name).getBytes(), seconds); - }catch(Exception ex){ - //Utils.trace(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); - } - } - public void setMapExpireTime(String name,Date atTime){ - if(!this.initialize)return; - Jedis jedis = this.getJedis(); - try{ - jedis.expireAt(("MAP."+name).getBytes(), atTime.getTime()/1000); - }catch(Exception ex){ - //Utils.trace(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); - } - } - - - - - - - - - - - /** - * 鍒楄〃鏈熬娣诲姞鍏冪礌 - * @param name - * @param value - * @return - */ - public Object push(String name, Object value) { - if(!this.initialize)return null; - console("push list value",name,value); - if(value==null){ - return null; - } - Jedis jedis = this.getJedis(); - try{ - jedis.rpush(("LIST."+name).getBytes(),Serialize.serialize(value)); - }catch(Exception ex){ - //Utils.trace(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); - } - return value; - } - /** - * 鑾峰彇鍒楄〃澶撮儴鍏冪礌 - * @param <T> - * @param name - * @return - */ - public <T> T pop(String name) { - if(!this.initialize)return null; - console("get list value",name); - Jedis jedis = this.getJedis(); - try{ - byte[] bytes = jedis.lpop(("LIST."+name).getBytes()); - if(bytes==null||bytes.length==0) - return null; - return (T) Serialize.unSerialize(bytes); - }catch(Exception ex){ - System.err.println(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); - } - return null; - } - public Long deleteList(String name) { - if(!this.initialize)return null; - console("delete list",name); - Jedis jedis = this.getJedis(); - try{ - return jedis.del("LIST."+name); - }catch(Exception ex){ - //Utils.trace(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); - } - return null; - } - public void setListExpire(String name,int seconds){ - if(!this.initialize)return; - Jedis jedis = this.getJedis(); - try{ - jedis.expire(("LIST."+name).getBytes(), seconds); - }catch(Exception ex){ - //Utils.trace(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); - } - } - public void setListExpireTime(String name,Date atTime){ - if(!this.initialize)return; - Jedis jedis = this.getJedis(); - try{ - jedis.expireAt(("LIST."+name).getBytes(), atTime.getTime()/1000); - }catch(Exception ex){ - //Utils.trace(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); - } - } - - - - - - - - - - - - + // key - value ---------------------------------------------------------------------------------------------------------- public String setValue(String flag, String key, String value) { - if(!this.initialize)return null; - console("set value",flag,key,value); - + if(!this.initialize) { + return null; + } Jedis jedis = this.getJedis(); try{ - String result = jedis.set("KV."+flag+"."+key, value); - }catch(Exception ex){ - //Utils.trace(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); + return jedis.set(flag + LINK + key, value); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); } - return value; + return null; } + public String setValue(String flag, String key, String value,Integer seconds) { - if(!this.initialize)return null; - console("set value",flag,key,value,seconds); - + if(!this.initialize) { + return null; + } Jedis jedis = this.getJedis(); try{ - String result = jedis.setex("KV."+flag+"."+key,seconds,value); - }catch(Exception ex){ - //Utils.trace(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); + return jedis.setex(flag + LINK + key, seconds , value); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); } - return value; + return null; } + public String getValue(String flag, String key) { - if(!this.initialize)return null; - console("get value",flag,key); - + if(!this.initialize) { + return null; + } Jedis jedis = this.getJedis(); try{ - String returnValue = jedis.get("KV."+flag+"."+key); - return returnValue; - }catch(Exception ex){ - //Utils.trace(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); + return jedis.get(flag + LINK + key); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); } return null; } + public Long deleteValue(String flag, String... key) { - if(!this.initialize)return null; - console("delete value",flag,key); + if(!this.initialize) { + return null; + } Jedis jedis = this.getJedis(); try{ - String[] keys=new String[key.length]; + String[] keys = new String[key.length]; for(int i=0;i<key.length;i++){ - keys[i]="KV."+flag+"."+key[i]; + keys[i] = flag + LINK + key[i]; } - Long returnValue = jedis.del(keys); - return returnValue; - }catch(Exception ex){ - //Utils.trace(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); + return jedis.del(keys); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); } return null; } + public Long clearValue(String flag) { - if(!this.initialize)return null; - console("clear value",flag); + if(!this.initialize) { + return null; + } this.setValue(flag, "CLEARING", "true"); Jedis jedis = this.getJedis(); try{ - //EVAL "return redis.call('del', unpack(redis.call('keys', ARGV[1])))" 0 KV.* - Object returnValue = jedis.eval("return redis.call('del', unpack(redis.call('keys', ARGV[1])))",0,"KV."+flag+"."+"*"); + Object returnValue = jedis.eval("return redis.call('del', unpack(redis.call('keys', ARGV[1])))",0,flag + LINK + "*"); return Long.parseLong(String.valueOf(returnValue)); - }catch(Exception ex){ - //Utils.trace(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); } return null; } public void setValueExpire(String flag, String key,int seconds){ - if(!this.initialize)return; + if(!this.initialize) { + return; + } Jedis jedis = this.getJedis(); try{ - jedis.expire(("KV."+flag+"."+key).getBytes(), seconds); - }catch(Exception ex){ - //Utils.trace(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); + jedis.expire((flag + LINK + key).getBytes(), seconds); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); + } + } + + public void setValueExpireTime(String flag, String key,Date atTime){ + if(!this.initialize) { + return; + } + Jedis jedis = this.getJedis(); + try{ + jedis.expireAt((flag + LINK + key).getBytes(), atTime.getTime()/1000); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); } } - public void setValueExpireTime(String flag, String key,Date atTime){ - if(!this.initialize)return; + // hash ---------------------------------------------------------------------------------------------------------- + + public Long setMap(String name, String key, Object value) { + if(!this.initialize) { + return null; + } + if(value == null){ + deleteMap(name,key); + return null; + } + Jedis jedis = this.getJedis(); + try { + return jedis.hset(name.getBytes(), key.getBytes(), Serialize.serialize(value)); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); + } + return null; + } + + public <T> T getMap(String name, String key) { + if(!this.initialize) { + return null; + } Jedis jedis = this.getJedis(); try{ - jedis.expireAt(("KV."+flag+"."+key).getBytes(), atTime.getTime()/1000); - }catch(Exception ex){ - //Utils.trace(ex.getMessage()); - }finally{ - if(jedis!=null) - this.pool.returnResource(jedis); + byte[] bytes = jedis.hget(name.getBytes(), key.getBytes()); + if (bytes == null || bytes.length == 0) { + return null; + } + return (T) Serialize.unSerialize(bytes); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); + } + return null; + } + + public Set<String> getMapKeys(String name) { + if(!this.initialize) { + return null; + } + Jedis jedis = this.getJedis(); + try{ + return jedis.hkeys(name); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); + } + return null; + } + + public Long deleteMap(String name, String... key) { + if(!this.initialize) { + return null; + } + Jedis jedis = this.getJedis(); + try{ + String[] keys = new String[key.length]; + System.arraycopy(key, 0, keys, 0, key.length); + return jedis.hdel(name, keys); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); + } + return null; + } + + public Long clearMap(String name) { + if(!this.initialize) { + return null; + } + Jedis jedis = this.getJedis(); + try{ + return jedis.del(name); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); + } + return null; + } + + public void setMapExpire(String name,int seconds){ + if(!this.initialize) { + return; + } + Jedis jedis = this.getJedis(); + try{ + jedis.expire(name.getBytes(), seconds); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); + } + } + + public void setMapExpireTime(String name,Date atTime){ + if(!this.initialize) { + return; + } + Jedis jedis = this.getJedis(); + try{ + jedis.expireAt(name.getBytes(), atTime.getTime()/1000); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); + } + } + + + // mq ---------------------------------------------------------------------------------------------------------- + + // 鍒楄〃鏈熬娣诲姞鍏冪礌 + public Long push(String name, Object value) { + if(!this.initialize) { + return null; + } + if(value == null){ + return null; + } + Jedis jedis = this.getJedis(); + try{ + return jedis.rpush(name.getBytes(), Serialize.serialize(value)); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); + } + return null; + } + + // 鑾峰彇鍒楄〃澶撮儴鍏冪礌 && 鍒犻櫎 + public <T> T pop(String name) { + if(!this.initialize){ + return null; + } + Jedis jedis = this.getJedis(); + try{ + byte[] bytes = jedis.lpop(name.getBytes()); + if(bytes == null || bytes.length == 0) { + return null; + } + return (T) Serialize.unSerialize(bytes); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); + } + return null; + } + + // 鍒犻櫎 + public Long deleteList(String name) { + if(!this.initialize) { + return null; + } + Jedis jedis = this.getJedis(); + try{ + return jedis.del(name); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); + } + return null; + } + + public void setListExpire(String name, int seconds){ + if(!this.initialize) { + return; + } + Jedis jedis = this.getJedis(); + try{ + jedis.expire(name.getBytes(), seconds); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); + } + } + + public void setListExpireTime(String name, Date atTime){ + if(!this.initialize) { + return; + } + Jedis jedis = this.getJedis(); + try{ + jedis.expireAt(name.getBytes(), atTime.getTime()/1000); + } catch (Exception e) { + log.error(this.getClass().getSimpleName(), e); } } @@ -462,7 +382,6 @@ public Object setObject(String flag,String key, Object value) { if(!this.initialize)return null; - console("set object",flag,key,value); if(value==null){ this.deleteObject(flag, key); @@ -482,7 +401,6 @@ } public Object setObject(String flag,String key, Object value,Integer seconds) { if(!this.initialize)return null; - console("set object",flag,key,value,seconds); if(value==null){ this.deleteObject(flag, key); @@ -502,8 +420,6 @@ } public <T> T getObject(String flag,String key) { if(!this.initialize)return null; - console("get object",flag,key); - Jedis jedis = this.getJedis(); try{ byte[] bytes = jedis.get(("OBJ."+flag+"."+key).getBytes()); @@ -522,7 +438,6 @@ public <T> Long deleteObject(String flag, String key) { if(!this.initialize)return null; - console("delete object",flag,key); Jedis jedis = this.getJedis(); try{ @@ -540,7 +455,6 @@ public <T> Long clearObject(String flag) { if(!this.initialize)return null; - console("clear object",flag); this.setObject(flag, "CLEARING", "true"); Jedis jedis = this.getJedis(); @@ -594,7 +508,6 @@ public String[] getKeys(String pattern) { if(!this.initialize)return null; - console("keys",pattern); Jedis jedis = this.getJedis(); try{ diff --git a/rsf-common/src/main/java/com/vincent/rsf/common/utils/Serialize.java b/rsf-common/src/main/java/com/vincent/rsf/common/utils/Serialize.java index 74b4fee..f3bf30e 100644 --- a/rsf-common/src/main/java/com/vincent/rsf/common/utils/Serialize.java +++ b/rsf-common/src/main/java/com/vincent/rsf/common/utils/Serialize.java @@ -1,10 +1,12 @@ package com.vincent.rsf.common.utils; +import lombok.extern.slf4j.Slf4j; + import java.io.*; +@Slf4j public class Serialize { - // 搴忓垪鍖� public static byte[] serialize(Object object) { ObjectOutputStream oos = null; ByteArrayOutputStream baos = null; @@ -14,12 +16,11 @@ oos.writeObject(object); return baos.toByteArray(); } catch (Exception e) { - e.printStackTrace(); + log.error("Serialize.serialize", e); } return null; } - // 鍙嶅簭鍒楀寲 public static Object unSerialize(byte[] bytes) { ByteArrayInputStream bais = null; try { @@ -34,10 +35,9 @@ }; return ois.readObject(); } catch (Exception e) { - e.printStackTrace(); + log.error("Serialize.unSerialize", e); } return null; } - } -- Gitblit v1.9.1