Redis redis自動接続、解放例

5550 ワード

一.簡単なredisに必要なjarパッケージを構築する
          commons-pool2-2.4.2.jar    
          spring-data-redis-1.4.0.RELEASE.jar  
          jedis-2.4.2.jar
この3つのバージョンのjarパケットは完全に協力することができ、jarパケットの衝突やバージョンが一致しない場合がない.redisはデータベースとして、正常なビジネスロジックに影響しません.
Javaプロジェクトでは、redisから必要なキャッシュがあるかどうかをクエリーし、データベースからクエリーしてからredisキャッシュに保存しない場合は、redisキャッシュはデータベースの機能に相当します.
二.redisプロファイル:redis.properties
#            
redis.pool.maxTotal=1000
#      idel            
redis.pool.maxIdle=1000
#      idel         
redis.pool.minIdle=10
#          ,          
redis.pool.maxWaitMillis=10000
#   borrow Object   ,             
redis.pool.testOnBorrow=true
#   return Object   ,             
redis.pool.testOnReturn=true
#“    ”    ,     ,   。     ,     “    ”。   -1.  
redis.pool.timeBetweenEvictionRunsMillis=30000
#      “  ”   ,          ;  
redis.pool.testWhileIdle=true
#   “    ”      ,            。   3.  
redis.pool.numTestsPerEvictionRun=50
#    
redis.timeout=5000
#redis    IP
redis.ip=127.0.0.1
#redis    Port    
redis.port=6379
#redis         
redis.password=shenzhenair123

三.redisプロファイルの読み込み
public class LoadRedisProperties {
	static Logger log = Logger.getLogger(LoadRedisProperties.class);
	public static final String REDIS_PROPERTIES_PATH = "redis.properties";
	
	public  static Properties  initProper() {	
		InputStream  is = null;
		Properties  pro = new Properties();
		try {
			 pro = new Properties();
			 is= Thread.currentThread().getContextClassLoader().getResourceAsStream(REDIS_PROPERTIES_PATH);
			pro.load(is);
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(is != null){
				try {
					is.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return pro;
	}
	

	public static void main(String[] args) {
		Properties initProper = LoadRedisProperties.initProper();
		System.out.println(initProper);
	}
	

一.redis接続プールによる自動接続と解放
public class RedisUtil {
	   static Logger log = Logger.getLogger(RedisUtil.class);
		
		private static JedisPool jedisPool = null;
		private static Integer MAX_TOTAL = null;
		private static Integer MAX_IDLE = null;
		private static Integer MIN_IDLE = null;
		private static Integer MAX_WAIT = null;
		private static String IP = null;
		private static Integer PORT = null;
		private static Integer TIME_OUT = null;
		private static String PASSWORD = null;
	
		
		//   redis   
	    static{
	    	 Properties pro = LoadRedisProperties.initProper();
	    	 MAX_TOTAL = Integer.valueOf((String) pro.get("redis.pool.maxTotal"));
	    	 MAX_IDLE = Integer.valueOf((String) pro.get("redis.pool.maxIdle"));
	    	 MIN_IDLE = Integer.valueOf((String) pro.get("redis.pool.minIdle"));
	    	 MAX_WAIT = Integer.valueOf((String) pro.get("redis.pool.maxWaitMillis"));
	    	 IP =  (String) pro.get("redis.ip");
	    	 PORT = Integer.valueOf((String) pro.get("redis.port"));
	    	 TIME_OUT = Integer.valueOf((String) pro.get("redis.timeout"));
	    	 PASSWORD = (String) pro.get("redis.password");
	       
	    	 JedisPoolConfig config = new JedisPoolConfig();
	        //    jedis   
	        config.setMaxTotal(MAX_TOTAL);
	        //          
	        config.setMaxIdle(MAX_IDLE);
	        //           
	        config.setMinIdle(MIN_IDLE);
	        //           
	        config.setMaxWaitMillis(MAX_WAIT);
	        //#     ,        
	        config.setTestOnReturn(true);
	        //    jedis       
	        config.setTestOnBorrow(true);
	        if(null == PASSWORD || PASSWORD.length() == 0){
	        	 jedisPool = new JedisPool(config,IP,PORT,TIME_OUT);
	        }else{
	        	jedisPool = new JedisPool(config,IP,PORT,TIME_OUT, PASSWORD);
	        }
	    }

	    //  Jedis  
	    public synchronized static Jedis getJedis(){
	        if(jedisPool != null){
	            Jedis resource = jedisPool.getResource();
	            return resource;
	        }else{
	            return null;
	        }
	    }

		    //  Jedis  
		    public static void closeJedis(final Jedis jedis){
		        if(jedis != null){
		            jedisPool.returnResource(jedis);
		        }
		    }
		    
		    public static void main(String[] args) {
				Jedis jedis = getJedis();
			}
		    
   
}

三.json変換ツール,List集合をjsonに変換し,jsonを関連オブジェクトの集合に変換する.

public class JsonUtils {
	
	    /**
	     * list       json   
	     * @param 
	     * @param ts
	     * @return
	     */
	    public static  String listToJson(List ts) {
	        String jsons = JSON.toJSONString(ts);
	        return jsons;
	    }

	    /**
	     * json   List    
	     */
	    public static  List jsonToList(String jsonString, Class clazz) {
	        @SuppressWarnings("unchecked")
	        List ts = (List) JSONArray.parseArray(jsonString, clazz);
	        return ts;
	    }
	
}

四.Javaでの呼び出し例
         try {
				key = fdlBsg.getAirline()+fdlBsg.getOcty()+fdlBsg.getDcty();
				jedis = RedisUtil.getJedis();
				String discountListJson = jedis.hget("FDL_REPORT_DATA_RATE_DISCOUNT", fdlBsg.getAirline()+fdlBsg.getOcty()+fdlBsg.getDcty());
				if(null != discountListJson && discountListJson.length() > 0){
					 discountList = JsonUtils.jsonToList(discountListJson, DiscountMangent.class);
				}
			} catch (Exception e) {
				e.printStackTrace();
			}finally{
				RedisUtil.closeJedis(jedis);
			}