RedisSingleUtils.java
package com.common.utils;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Locale;import java.util.Map;import java.util.ResourceBundle;import java.util.Set;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.ch.fm.system.dictionary.entity.DictionaryDetailEntity;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;/** * * redis工具类 *
* @author why * @date 2016-7-20上午11:12:28 */public class RedisSingleUtils { public static Logger logger = LoggerFactory.getLogger(RedisSingleUtils.class); private static JedisPool jedisPool = null; static { //从属性文件读取配置 ResourceBundle bundle = ResourceBundle.getBundle("conf.system.system",Locale.CHINESE); String host = bundle.getString("redis.host"); String port = bundle.getString("redis.port"); int index = StrUtil.isNullOrBlank(bundle.getString("redis.index"))?Integer.valueOf(bundle.getString("redis.index")):0; String auth = null; //bundle.getString("redis.auth"); try { JedisPoolConfig config = new JedisPoolConfig(); //config.setMaxTotal(500); config.setMaxIdle(50); //config.setMaxWaitMillis(1000); config.setMaxWait(1000); config.setTestOnBorrow(true); // 在还回给pool时,是否提前进行validate操作 config.setTestOnReturn(true); //连接池设置 jedisPool = new JedisPool(config, host, Integer.parseInt(port), 1800000, auth, index); } catch (Exception e) { logger.error(e.getMessage(), e); } } /** * * 获得REDIS客户端 *
* @author wanghuihui * @date 2017-7-20下午1:40:08 * @return */ public synchronized static Jedis getJedis() { try { if (jedisPool != null) { Jedis resource = jedisPool.getResource(); return resource; } else { return null; } } catch (Exception e) { logger.error(e.getMessage(), e); return null; } } /** * 释放jedis资源 * * @param jedis */ public static void closeJedis(final Jedis jedis) { if (jedis != null) { jedisPool.returnResource(jedis); //jedis.close(); } } /** * * 获得KEY所指定的对象。 *
* @author wanghuihui * @date 2017-7-14下午4:21:14 * @param key */ public static Object getObjectByKey(String key){ Jedis jedis = null; // 从池中获取一个jedis实例 try { jedis = getJedis(); String type = jedis.type(key); if("string".equalsIgnoreCase(type)){ return jedis.get(key); }else if("hash".equalsIgnoreCase(type) || "map".equalsIgnoreCase(type)){ //map对应的类型 相当于 redis中的hash return jedis.hgetAll(key); }else if("list".equalsIgnoreCase(type)){ Long size = jedis.llen(key); return jedis.lrange(key, 0, size); }else if("set".equalsIgnoreCase(type)){ return jedis.smembers(key); }else if("zset".equalsIgnoreCase(type)){ //有序结果集和无序结果集是一样的,都是SET //Long size = jedis.zrank(key, member)(key); return jedis.zrange(key, 0, 10); }else{ return null; } } catch (Exception e) { // 销毁对象 jedisPool.returnBrokenResource(jedis); logger.error(e.getMessage(), e); } finally { // 还回到连接池 closeJedis(jedis); } return null; } /** * * 获得KEY所指定的对象。 *
* @author wanghuihui * @date 2017-7-20下午3:09:13 * @param key 键 * @param value 值 * @param isCover 如果已经存在KEY:是否覆盖 * @return */ public static Object setObjectByKey(String key,Object value,boolean isCover){ if(null == key || "".equals(key) || key.isEmpty()){ logger.info("key不能空!"); return false; } if(null == value || "".equals(value)){ logger.info("value不能空!"); return false; } Jedis jedis = null; // 从池中获取一个jedis实例 try { jedis = getJedis(); boolean isExists = jedis.exists(key); if(isExists && isCover){ jedis.del(key); } String type = jedis.type(key); if(value instanceof String){//字符串处理 if(isExists && !isCover && !"string".equals(type)){ throw new RuntimeException("类型不匹配!不能添加"); }else{ jedis.set(key, value.toString()); return true; } }else if(value instanceof List){//LIST处理 if(isExists && !isCover && !"list".equals(type)){ throw new RuntimeException("类型不匹配!不能添加"); }else{ List