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为我们提供了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();
        }
    }
}

  

配置文件

Jedis连接池