Java客戶端Jedis

使用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;
    }
 
}
相關文章
相關標籤/搜索