Redis笔记(4)——Jedis连接池技术

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Richard1997/article/details/81980684

 使用连接池技术可以很方便高效地管理连接资源,这一点和MySQL类似。

    核心类为JedisPool,它的构造方法有三个参数,后两个和Jedis一致,第一个参数需要指定连接池的配置对象,所以也要构造一个配置对象来协同工作!

package com.rr.learnredis;

import org.junit.Test;

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

public class JedisPoolTest {
	  
	  // 通过redis连接池获得Jedis连接对象
	  @Test
	  public void jedisPoolTest1() {
		  // 0.创建连接池配置对象
		  JedisPoolConfig cofig = new JedisPoolConfig();
		  cofig.setMaxIdle(30); // 最大连接闲置个数,超过30个闲置连接就开始释放连接
		  cofig.setMinIdle(10); // 最小连接闲置个数,不足10个闲置连接就开始创建连接
		  cofig.setMaxTotal(50); // 最大连接数
		  
		  // 1.创建一个redis的redis连接池
		  JedisPool pool = new JedisPool(cofig, "localhost", 6379);
		  
		  // 2.从池子中获取redis连接资源
		  Jedis jedis = pool.getResource();
		  
		  // 3.操作数据库
		  jedis.set("addr", "武汉");
		  System.out.println(jedis.get("addr"));
		  // 4.关闭资源
		  jedis.close();
		  pool.close();
		  
	  }
}

和JDBC类似,我们也可以创建一个连接资源工具类:

 首先在src根目录下创建redis配置文件redis.properties:

redis.maxIdle=30
redis.minIdle=10
redis.maxTotal=50
redis.url=127.0.0.1
redis.port=6379

工具类及其中的main测试方法:

package com.rr.jedisutils;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

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

public class JedisPoolUtils {
	private static JedisPool pool;
	static {
		  // 加载配置文件
		  InputStream inStr = JedisPoolUtils.class.getClassLoader().getResourceAsStream("redis.properties");
		  Properties pro = new Properties();
		  try {
			pro.load(inStr);
		} catch (IOException e) {
			e.printStackTrace();
		}
		  // 获得池对象  
		  JedisPoolConfig cofig = new JedisPoolConfig();
		  cofig.setMaxIdle(Integer.parseInt(pro.get("redis.maxIdle").toString())); 
		  cofig.setMinIdle(Integer.parseInt(pro.get("redis.minIdle").toString())); 
		  cofig.setMaxTotal(Integer.parseInt(pro.get("redis.maxTotal").toString())); 
		  pool = new JedisPool(cofig, pro.getProperty("redis.url"), Integer.parseInt(pro.getProperty("redis.port")));
	}
	
	// 获得Jedis资源的方法
	public static Jedis getJedis() {
		return pool.getResource();
	}
	
	public static void main(String[] args) {
		System.out.print(getJedis().get("addr"));
	}
}

猜你喜欢

转载自blog.csdn.net/Richard1997/article/details/81980684