jedis连接池的使用:
所需jar包:jedis使用了apache commons-pool2库,导入jedis时会自动导入common-pool2jar包
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.2</version>
</dependency>
定义一个JedisAPI类,主要实现过程:
>定义一个JedisAPI类的实例instance,目的是在程序运行时获取唯一实例,实现单例,以节省内存空间。
private static final JedisAPI instance = new JedisAPI();
//获取实例,用于实现单例模式 public JedisAPI getInstance(){ return instance; }
>可能需要配置的一些属性:
private String host; private int port; private int DBNumber = 0;//获取host和port public JedisAPI setHostAndPort(String host, int port){ this.host = host; this.port = port; return this; } //设置db public JedisAPI setDBnumber(int DBNumber){ this.DBNumber = DBNumber; return this; }
>定义连接池,定义一个init()方法,对instance进行初始化,初始化主要包括config的配置和连接池的创建:
private static JedisPool pool = null;
public JedisAPI init(){ if(pool == null){ JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(8);//设置最大连接数,默认为8 config.setMaxIdle(8); //设置最大空闲连接数,默认为8 config.setMinIdle(0);//设置最小空闲连接数,默认为0 config.setMaxWaitMillis(1000);//设置连接时的最长等待时间,单位为毫秒,默认为-1,表示永不超时。 pool = new JedisPool(config, "127.0.0.1", 6379, 60000); } return this; }
>接下来就可以用这个连接池操作redis数据库了:
@SuppressWarnings("deprecation")
public void setKey(){
Jedis jedis = null; //定义一个jedis连接
try {
jedis = pool.getResource(); //从连接池获取资源,初始化jedis连接
jedis.select(DBNumber);//选择db
jedis.set("123", "1234"); //jedis对数据库的操作
} catch (Exception e) {
pool.returnBrokenResource(jedis); //发生异常,将资源返还给连接池
e.getStackTrace();
}finally {
pool.returnResource(jedis); //程序结束,将资源返还给连接池
}
}
@SuppressWarnings("deprecation")
public String getKey(){
Jedis jedis = null;
try {
jedis = pool.getResource();
jedis.select(DBNumber);//选择db
return jedis.get("123");
} catch (Exception e) {
pool.returnBrokenResource(jedis);
e.getStackTrace();
return null;
}finally {
pool.returnResource(jedis);
}
}
调用JedisAPI:
private static JedisAPI jedisAPI; jedisAPI = new JedisAPI().getInstance().setHostAndPort("127.0.0.1", 6381).setDBnumber(1).init(); jedisAPI.setKey(); jedisAPI.getKey();
JedisSentinelsPool的使用和JedisPool基本一致,需要配置一下sentinels集群地址即可。
