package com.redis; import java.io.IOException; import java.util.Map; import java.util.ResourceBundle; import com.alibaba.fastjson.JSON; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import redis.clients.jedis.ShardedJedis; /** *非切片連接池 *備註:redis鏈接池 操做工具類 *提交:qinxuewu *時間:2015年8月19日上午8:59:24 * */ public class RedisUtil { public static JedisPool jedisPool; // 池化管理jedis連接池 static { JedisPoolConfig config = new JedisPoolConfig(); //設置最大鏈接數 config.setMaxTotal(300); //設置最大空閒數 config.setMaxIdle(600); // //設置超時時間 config.setMaxWaitMillis(10000); //初始化鏈接池 jedisPool = new JedisPool(config, "127.0.0.1",6379); } /** * 獲取 redis連接 * @return * 2017年9月13日 */ public static Jedis getResource(){ return jedisPool.getResource(); } /************************************************String Key 類型*******************************************/ /** * 向緩存中設置字符串內容 * 失敗返回0 不覆蓋 成功 返回1 * @param key key * @param value value * @return * @throws Exception */ public static long setnx(String key,String value){ Jedis jedis = null; try { jedis = jedisPool.getResource(); return jedis.setnx(key, value); } catch (Exception e) { e.printStackTrace(); }finally{ jedis.close(); } return 0; } /** 成功返回 OK * 向緩存中設置對象(自動把對象轉換成json數據存儲到緩層中) * @param key * @param value * @return */ public static long setnx(String key,Object value){ Jedis jedis = null; try { String objectJson = JSON.toJSONString(value); jedis = jedisPool.getResource(); return jedis.setnx(key, objectJson); } catch (Exception e) { e.printStackTrace(); }finally{ jedis.close(); } return 0; } /** * 刪除緩存中得對象,根據key * @param key * @return */ public static boolean del(String key){ Jedis jedis = null; try { jedis = jedisPool.getResource(); jedis.del(key); return true; } catch (Exception e) { e.printStackTrace(); return false; }finally{ jedis.close(); } } /** * 根據key 獲取內容 * @param key * @return */ public static Object get(String key){ Jedis jedis = null; try { jedis = jedisPool.getResource(); Object value = jedis.get(key); return value; } catch (Exception e) { e.printStackTrace(); return false; }finally{ jedis.close(); } } /** * 根據key 獲取對象 * @param key * @return */ public static <T> T get(String key,Class<T> clazz){ Jedis jedis = null; try { jedis = jedisPool.getResource(); String value = jedis.get(key); return JSON.parseObject(value, clazz); } catch (Exception e) { e.printStackTrace(); return null; }finally{ jedis.close(); } } /*** * 檢查key是否存在 * @param key * @return * true 存在 * false 不存在 */ public static boolean checkExists(String key){ Jedis jedis = null; try { jedis = jedisPool.getResource(); return jedis.exists(key); } catch (Exception e) { e.printStackTrace(); return false; }finally{ jedis.close(); } } /*** * 往指定的key追加內容,key不在則添加key * @param key * @param value * @return */ public static boolean appendStr(String key,String value){ Jedis jedis = null; try { jedis = jedisPool.getResource(); jedis.append(key, value); return true; } catch (Exception e) { e.printStackTrace(); return false; }finally{ jedis.close(); } } /*** * 批量獲取key的value值 * @param keys * @return */ public static Object bathKey(String[] keys){ Jedis jedis = null; try { jedis = jedisPool.getResource(); return jedis.mget(keys); } catch (Exception e) { e.printStackTrace(); return null; }finally{ jedis.close(); } } /***************************************hashes(哈希)類型*********************************************************/ /** * 設置hash field * 若是存在不會設置返回0 * @param key * @param field * @param value * @return 成功返回1,失敗 0 */ public static long hsetnx(String key,String field,String value){ Jedis jedis = null; try { jedis = jedisPool.getResource(); return jedis.hsetnx(key, field, value); } catch (Exception e) { e.printStackTrace(); }finally{ jedis.close(); } return 0; } /** * hget取值(value) * @param key * @param field * @return */ public static Object hget(String key,String field){ Jedis jedis = null; try { jedis = jedisPool.getResource(); return jedis.hget(key, field) ; } catch (Exception e) { e.printStackTrace(); return null; }finally{ jedis.close(); } } /** * hmset 批量設置值 * @param key * @param hashmap * @return 成功返回OK */ public static String hmset(String key,Map<String, String> hashmap){ Jedis jedis = null; try { jedis = jedisPool.getResource(); return jedis.hmset(key, hashmap); } catch (Exception e) { e.printStackTrace(); }finally{ jedis.close(); } return null; } /** * hmget 批量取值(value) * @param key * @param field * @return */ public static Object hmget (String key,String...fields){ Jedis jedis = null; try { jedis = jedisPool.getResource(); return jedis.hmget(key, fields); } catch (Exception e) { e.printStackTrace(); return null; }finally{ jedis.close(); } } /** * @param key * @return 返回全部的key和value */ public static Map<String, String> hgetall(String key){ Jedis jedis = null; try { jedis = jedisPool.getResource(); return jedis.hgetAll(key); } catch (Exception e) { e.printStackTrace(); return null; }finally{ jedis.close(); } } /***************************************list(列表)*********************************************************/ /** * lpush 設置值 從頭部壓入一個元素 * @param key * @param strings * @return 成功返回成員的數量 失敗返回0 */ public static long lpush(String key,String...strings){ Jedis jedis = null; try { jedis = jedisPool.getResource(); return jedis.lpush(key, strings); } catch (Exception e) { e.printStackTrace(); }finally{ jedis.close(); } return 0; } /** * list列表取值(lrange) * @param key * @param start * @param end * @return start=0 end=-1(表明從開始到結束) */ public static Object lrange (String key,long start,long end){ Jedis jedis = null; try { jedis = jedisPool.getResource(); return jedis.lrange(key, start, end); } catch (Exception e) { e.printStackTrace(); }finally{ jedis.close(); } return 0; } public static String rpoplpush(String key,String dstkey){ Jedis jedis = null; try { jedis = jedisPool.getResource(); return jedis.rpoplpush(key, dstkey); } catch (Exception e) { e.printStackTrace(); }finally{ jedis.close(); } return null; } public static String rpop(String key){ Jedis jedis = null; try { jedis = jedisPool.getResource(); return jedis.rpop(key); } catch (Exception e) { e.printStackTrace(); }finally{ jedis.close(); } return null; } }