Java客户端Jedis

使用Jedis的Java客户端

maven依赖

        <!-- jedis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

        <!-- fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.22</version>
        </dependency>

使用Jedis连接池

JedisUtil.java

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;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值