使用Jedis的Java客戶端java
maven依賴redis
<!-- jedis --> <dependency> <groupid>redis.clients</groupid> jedis</artifactid> <version>2.9.0</version> </dependency> <!-- fastjson --> <dependency> <groupid>com.alibaba</groupid> fastjson</artifactid> <version>1.2.22</version> </dependency>
使用Jedis鏈接池apache
JedisUtil.javajson
package com.wishfulcloud.commons.dataSource.redis.jedis; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; /** * Jedis 工具類 * * * @author wangxuezheng * @date 2017年3月21日 下午3:28:18 * @version V1.0 * */ public class JedisUtil { private static volatile GenericObjectPoolConfig poolConfig = null; static{ poolConfig = new GenericObjectPoolConfig(); // 最大鏈接數爲默認值的5倍 poolConfig.setMaxTotal(GenericObjectPoolConfig.DEFAULT_MAX_TOTAL * 5); // 最大空閒鏈接數爲默認值的3倍 poolConfig.setMaxIdle(GenericObjectPoolConfig.DEFAULT_MAX_IDLE * 3); // 最小空閒鏈接數爲默認值的2倍 poolConfig.setMinIdle(GenericObjectPoolConfig.DEFAULT_MIN_IDLE * 2); // 開啓jmx功能 poolConfig.setJmxEnabled(true); // 鏈接池沒有鏈接後客戶端的最大等待時間(單位 毫秒) poolConfig.setMaxWaitMillis(3000); } private static volatile JedisPool jedisPool = null; private JedisUtil(){} /** * 從鏈接池中獲取一個Jedis實例 * * @return */ public static Jedis getJedisInstance() throws Exception{ try { if(null == jedisPool){ synchronized (JedisUtil.class){ if(null == jedisPool){ jedisPool = new JedisPool(poolConfig,"192.168.1.218",6379); } } } } catch (Exception e) { throw e; } return jedisPool.getResource(); } /** * 歸還到鏈接池 * * @param jedis */ public static void close(Jedis jedis) throws Exception{ try { if(null != jedis){ jedis.close(); } } catch (Exception e) { throw e; } } }
BaseCache.java緩存
package com.wishfulcloud.commons.dataSource.redis.jedis; import com.alibaba.fastjson.JSON; import redis.clients.jedis.Jedis; /** * 單機或着主從複製 ,Jedis Java 客戶端 * * @author wangxuezheng * @date 2017年3月21日 下午3:55:26 * @version V1.0 * */ public class BaseCache<t> { /** * 保存或者更新一個實體 * * 若是seconds參數值不爲0的話,則是過時緩存,具備緩存時長 * * @param jedis * @param entity 實體對象 * @param id 實體主鍵 * @param seconds 有效時長多少秒 * * @return true 保存或更新成功 * false 保存或更新失敗 */ public Boolean saveOrUpdate(Jedis jedis, T entity, String id, int seconds){ String key = entity.getClass().getSimpleName().toLowerCase() + ":" + id; String ok = jedis.set(key , JSON.toJSONString(entity)); if (seconds != 0){ jedis.expire(key, seconds); } return "OK".equals(ok); } /** * 根據類型和id獲取一個實體,未獲取到返回 null * * @param jedis * @param clazz 實體.class * @param id 主鍵id * * @return T 或着 null */ public T getById(Jedis jedis, Class<t> clazz, String id){ String object = jedis.get(clazz.getSimpleName().toLowerCase() + ":" +id); return JSON.parseObject(object, clazz); } /** * 根據id刪除一個實體對象 * * @param jedis * @param clazz 實體.class * @param id 主鍵id * @return true 刪除成功 * false 刪除失敗 * */ public Boolean deleteEntity(Jedis jedis, Class<t> clazz, String id){ String key = clazz.getSimpleName().toLowerCase() + ":" +id; return jedis.del(key) > 0; } }