JedisPool工具类及使用

项目中需要用到缓存减少数据库压力,选择redis作为工具,构建一个jedis池达到实际效果
1
1.JedisPoolCacheUtils
       
            redis.clients
            jedis
            2.9.0
       

 

package com.ithzk.common.redis;

import java.util.Properties;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ithzk.common.util.Detect;
import com.ithzk.common.util.JsonUtil;
import com.ithzk.common.util.PropertiesUtil;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * redis 操作数据库配置类
 * @author huzekun
 * @date:2017年12月27日 下午3:01:04
 */
@Component("JedisPoolCacheUtils")
public class JedisPoolCacheUtils {

    private final static Logger log = Logger.getLogger(JedisPoolCacheUtils.class);

    public final static String DATA_REDIS_KEY = "data_";

    /** 
     * redis过期时间,以秒为单位 
     */  
    public final static int EXRP_HOUR = 60 * 60;            //一小时  
    public final static int EXRP_HALF_DAY = 60 * 60 * 12;        //半天  
    public final static int EXRP_DAY = 60 * 60 * 24;        //一天  
    public final static int EXRP_MONTH = 60 * 60 * 24 * 30; //一个月 

    private static JedisPool jedisPool = null;

    /**
     * 初始化Redis连接池
     */
    public static void initialPool(String path){
        Properties prop = new Properties(); 
        try {
            prop.load(JedisPoolCacheUtils.class.getClassLoader().getResourceAsStream(path+"-conf/redis.properties"));
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(Detect.asPrimitiveInt(prop.getProperty("redis.pool.maxActive")));
            config.setMaxIdle(Detect.asPrimitiveInt(prop.getProperty("redis.pool.maxIdle")));
            config.setMinIdle(Detect.asPrimitiveInt(prop.getProperty("redis.pool.minIdle")));
            config.setMaxWaitMillis(Detect.asPrimitiveInt(prop.getProperty("redis.pool.maxWait")));
            config.setTestOnBorrow(true);
            config.setTestOnReturn(true);
            config.setTestWhileIdle(true);
            String host = prop.getProperty("redis.host");
            String port = prop.getProperty("redis.port");
            String timeOut = prop.getProperty("redis.timeout");
            jedisPool = new JedisPool(config, host, Detect.asPrimitiveInt(port), Detect.asPrimitiveInt(timeOut));
        } catch (Exception e) {
            log.error("First create JedisPool error : "+e);
            try{
                //如果第一个IP异常,则访问第二个IP
                JedisPoolConfig config = new JedisPoolConfig();
                config.setMaxTotal(Detect.asPrimitiveInt(PropertiesUtil.getValueByBundleFromConf(path+"-conf/redis.properties","redis.pool.maxActive")));
                config.setMaxIdle(Detect.asPrimitiveInt(PropertiesUtil.getValueByBundleFromConf(path+"-conf/redis.properties","redis.pool.maxIdle")));
                config.setMinIdle(Detect.asPrimitiveInt(PropertiesUtil.getValueByBundleFromConf(path+"-conf/redis.properties","redis.pool.minIdle")));
                config.setMaxWaitMillis(Detect.asPrimitiveInt(PropertiesUt

你可能感兴趣的:(jedis,jedis)