Java客户端Jedis

Posted 如若

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java客户端Jedis相关的知识,希望对你有一定的参考价值。

使用Jedis的Java客户端

maven依赖

<!-- 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连接池

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

 

以上是关于Java客户端Jedis的主要内容,如果未能解决你的问题,请参考以下文章

Redis的Java客户端Jedis的八种调用方式(事务管道分布式…)介绍(转)

Redis --Java客户端 Jedis

Java客户端 Jedis

redis--jedis

Java客户端Jedis

Jedis/JedisPool和Redis数据类型与特性