当前位置: 首页 > 工具软件 > Redis Studio > 使用案例 >

Redis 第二集Redis连接池(Redis)

柏明亮
2023-12-01

说明: 1. 演示Redis连接池JedisPool 连接池
2. 笔者代码中的注释有各种实用说明(当然你觉得注释碍眼可以直接删除):
(a).遇到异常及解决方案
(b).一些使用说明
©.知识点对比与类比
3. 此项目演示需要jedis.jar和commons-pool2.jar

=代码如下======

package com.it.util;

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

/**
 * Redis连接池JedisPool简单使用
 * 
 * 1.每次都要去连接Jedis是不是很浪费连接资源
 *  类比jdbc通常会使用jdbc连接池cp30或dbcp
 *  同样的不能经常性的连接/断开连接Redis服务器,这样的网络开销是很大的。
 *  所以,也使用一个池子来管理jedis连接,这个池子就是JedisPool
 *  
 *  2.JedisPool是线程安全的,可以创建可靠的Jedis实例。
 *    你凭什么说JedisPool是线程安全的?因为它是一个无状态对象
 *  
 *  3.创建JedisPool
 *  
 * @author 拈花为何不一笑
 * 
 * 说明:此项目演示需要jedis.jar和commons-pool2.jar
 * 
 */
public class JedisPoolApp {
	
	private JedisPool jedisPool;
	
	//初始化JedisPool连接池
	public void init(){
		JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
		jedisPoolConfig.setMaxTotal(10);//设置最大连接数
        jedisPool = new JedisPool(jedisPoolConfig, "localhost",6379,5000,"foo666k");
      
        
	}

	//从JedisPool中获取一个Jedis实例
	public Jedis getJedis(){
		return jedisPool.getResource();
	}

	//释放Jedis
	public void freeJedis(Jedis jedis){
		if(null != jedis){
			//jedisPool.returnResource(jedis);此方法为早期版本方法,已过时或废弃
			jedisPool.close();
		}
	}
	
	
	
	/**
	 * 单元测试
	 * @param args
	 */
	public static void main(String[] args) {

		JedisPoolApp jApp = new JedisPoolApp();
		//初始化jedis连接池
		jApp.init();
		//从连接池中获取一个Jedis实例
		Jedis jedis = jApp.getJedis();
		jedis.select(1);//选择Redis数据库1,后面的相关的操作数据就存放在数据库1中
		//业务操作
		//遇到异常:JedisDataException, MISCONF Redis is configured to save RDB snapshots
		//but is currently not able to persist on disk...
		//解决方案:stop-writes-on-bgsave-error no(redis.windows.conf配置文件中把yes设置成no,并且重启Redis服务器)
		jedis.set("str-key","i am redis database1");
		System.out.println(jedis.get("str-key"));
		
		//释放jedis连接
		jApp.freeJedis(jedis);

	}

}

 类似资料: