Jedis连接池

jedis是官方首选的java客户端开发包

Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C++、php、Node.js、Go等。 

在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis、等其中官方推荐使用Jedis和Redisson。 

在企业中用的最多的就是Jedis,Jedis同样也是托管在github上,

地址:https://github.com/xetorthio/jedis。
下载jedis解压后得到jar包如下:java操作redis数据库API(Jedis)

 

jedis常用API

方法解释
new Jedis(host, port) 创建jedis对象,参数host是redis服务器地址,参数port是redis服务端口
set(key,value) 设置字符串类型的数据
get(key) 获得字符串类型的数据
hset(key,field,value) 设置哈希类型的数据
hget(key,field) 获得哈希类型的数据
lpush(key,values) 设置列表类型的数据
lpop(key) 列表左面弹栈
rpop(key) 列表右面弹栈
del(key) 删除指定的key

 

 

 

 

jedis连接池的使用

jedis连接池的基本概念

jedis连接资源的创建与销毁是很消耗程序性能,所以jedis为我们提供了jedis的池化技术

jedisPool在创建时初始化一些连接资源存储到连接池中,使用jedis连接资源时不需要创建,

而是从连接池中获取一个资源进行redis的操作,使用完毕后,不需要销毁该jedis连接资源,

而是将该资源归还给连接池,供其他请求使用。

 

package com.baidu;

import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class jedisPool {
    @Test
    public void testJedisPool(){
        //1 获得连接池配置对象,设置配置项
        JedisPoolConfig config = new JedisPoolConfig();
        // 1.1 最大连接数
        config.setMaxTotal(30);

        //1.2 最大空闲连接数
        config.setMaxIdle(10);

        //获得连接池
        JedisPool jedisPool = new JedisPool(config,"localhost",6379);


        Jedis jedis=null;
        try {
            //3.获得核心对象
             jedis = jedisPool.getResource();
            //4.设置数据
            jedis.set("name","xinruyi");
            //5.获得数据
            String name = jedis.get("name");
            System.out.println(name);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(jedis!=null){
                jedis.close();
            }
        }

        //虚拟机关闭时,释放pool资源
        if(jedisPool!=null){
            jedisPool.close();
        }
    }
}

  



案例-编写jedis连接池工具类

/*JedisUtil*/

package com.baidu;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.ResourceBundle;
/*jedis工具类*/

public final class JedisUtil {
    private JedisUtil() {}
    private static JedisPool jedisPool;
    private static int maxtotal;
    private static int maxwaitmillis;
    private static String host;
    private static int port;

    /*读取jedis.properties配置文件*/
    static{
        ResourceBundle rb = ResourceBundle.getBundle("jedis");
        maxtotal = Integer.parseInt(rb.getString("maxtotal"));
        maxwaitmillis = Integer.parseInt(rb.getString("maxwaitmillis"));
        host = rb.getString("host");
        port = Integer.parseInt(rb.getString("port"));
    }

    /*创建连接池*/
    static{
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxTotal(maxtotal);
        jedisPoolConfig.setMaxWaitMillis(maxwaitmillis);
        jedisPool = new JedisPool(jedisPoolConfig,host,port);
    }

    /*获取jedis*/
    public static Jedis getJedis(){
        return jedisPool.getResource();
    }

    /*关闭Jedis*/
    public static void close(Jedis jedis){
        if(jedis!=null){
            jedis.close();
        }
    }
}

  

配置文件

 

 



 

posted @ 2018-07-30 16:10  Roy-Xin  阅读(18609)  评论(1编辑  收藏  举报