| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 | package com.iamberry.redis;import com.alibaba.fastjson.JSONObject;import com.iamberry.wechat.tools.NameUtils;import com.iamberry.wechat.tools.payUtil.DatetimeUtil;import org.apache.log4j.Logger;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;import java.util.Date;import java.util.List;/** * redis工具类 * @author root */public class RedisUtils {    /**ip*/    private static final String IP = NameUtils.getConfig("redis_host");    /**端口*/    private static final int PORT = Integer.parseInt(NameUtils.getConfig("redis_port"));    /**密码(原始默认是没有密码)*/    private static final String AUTH = NameUtils.getConfig("redis_auth");    /**最大连接数*/    private static int   MAX_ACTIVE = Integer.parseInt(NameUtils.getConfig("redis_max_active"));    /**设置最大空闲数*/    private static int   MAX_IDLE = Integer.parseInt(NameUtils.getConfig("redis_max_idle"));    /**最大连接时间*/    private static int   MAX_WAIT = Integer.parseInt(NameUtils.getConfig("redis_max_wait"));    /**超时时间*/    private static int   TIMEOUT = Integer.parseInt(NameUtils.getConfig("redis_timeout"));    private static JedisPool pool = null;    private static Logger logger = Logger.getLogger(RedisUtils.class);    static {        /*         * 初始化线程池(只在类进行初始化的时候进行一次)         */        JedisPoolConfig config = new JedisPoolConfig();        config.setMaxTotal(MAX_ACTIVE);        config.setMaxIdle(MAX_IDLE);        config.setMaxWaitMillis(MAX_WAIT);        config.setTestOnBorrow(false);        config.setTestOnReturn(true);        config.setTestWhileIdle(true);        pool = new JedisPool(config, IP, PORT, TIMEOUT);    }    /**     * 获取连接     */    private static synchronized Jedis getJedis() {        try {            if(pool != null) {                Jedis jedis = pool.getResource();                jedis.auth(AUTH);                return jedis;            } else {                throw new RuntimeException("获取失败Redis实例失败,请重试");            }        } catch (Exception e) {            logger.error("", e);            throw e;        }    }    /**     * 插入对象     * @param key     * @param obj     * @return     */    public static boolean put(String key, Object obj) {        Jedis jedis = null;        try {            String value = JSONObject.toJSONString(obj);            jedis = getJedis();            return "ok".equalsIgnoreCase(jedis.set(key, value));        } catch (Exception e) {            logger.error("", e);        } finally {            colse(jedis);        }        return false;    }    /**     * 插入对象     * @param key     * @param value     * @return     */    public static boolean put(String key, String value) {        Jedis jedis = null;        try {            jedis = getJedis();            return "ok".equalsIgnoreCase(jedis.set(key, value));        } catch (Exception e) {            logger.error("", e);        } finally {            colse(jedis);        }        return false;    }    /**     * 获取单个对象     * @param key     * @param clazz     * @return     */    public static <T> T get(String key, Class<T> clazz) {        Jedis jedis = null;        try {            jedis = getJedis();            String result = jedis.get(key);            return JSONObject.parseObject(result, clazz);        } catch (Exception e) {            logger.error("", e);        } finally {            colse(jedis);        }        return null;    }    /**     * 获取单个String对象     * @param key     * @return     */    public static String get(String key) {        Jedis jedis = null;        try {            jedis = getJedis();            return jedis.get(key);        } catch (Exception e) {            logger.error("", e);        } finally {            colse(jedis);        }        return null;    }    /**     * 获取list集合     * @param key     * @param clazz     * @return     */    public static <T> List<T> list(String key, Class<T> clazz) {        Jedis jedis = null;        try {            jedis = getJedis();            String result = jedis.get(key);            return JSONObject.parseArray(result, clazz);        } catch (Exception e) {            logger.error("", e);        } finally {            colse(jedis);        }        return null;    }    /**     * 删除key     * @param key     * @return     */    public static boolean del(String key) {        Jedis jedis = null;        try {            jedis = getJedis();            return jedis.del(key) >= 1;        } catch (Exception e) {            logger.error("", e);        } finally {            colse(jedis);        }        return false;    }    /**     * 设置过期时间     * @param key     * @param date     */    public static void expire(String key, Date date) {        Jedis jedis = null;        try {            jedis = getJedis();            if (null != date) {                long nowTime = System.currentTimeMillis();                long dateTime = date.getTime();                if (dateTime > nowTime) {                    jedis.expire(key, (int)(dateTime - nowTime) / 1000);                }            }        }catch (Exception e){            logger.error("", e);        }finally {            colse(jedis);        }    }    /**     * 关闭连接     * @param jedis     */    private static void colse(Jedis jedis) {        if(jedis != null) {            jedis.close();        }    }}
 |