【README】 本文旨在po出 redis连接池的测试用例
<dependencies><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.5.1</version></dependency></dependencies>
【1】 代码
/*** redis连接池测试用例 */
public class RedisPoolTest {public static void main(String[] args) {MyJedisPool pool = JedisPoolUtil.getJedisPoolInstance(); // 获取redis连接池 Jedis jedis = null; try {jedis = pool.getResource(); // 获取redis连接jedis.set("kaa", "vaa"); // 设置redis的键值对 } catch(Exception e) {e.printStackTrace(); } finally { if (jedis != null ) {JedisPoolUtil.release(pool, jedis); // 关闭redis连接 System.out.println("关闭redis连接"); }}}
}
/*** jedis redis连接池*/
public class JedisPoolUtil {private static volatile MyJedisPool pool = null; private JedisPoolUtil(){}public static MyJedisPool getJedisPoolInstance() {if (pool == null) {synchronized (JedisPoolUtil.class) {JedisPoolConfig conf = new JedisPoolConfig(); // redis连接池配置conf.setMaxIdle(2); // 最多2个连接空闲 conf.setMaxTotal(5); // 最多5个连接conf.setMaxWaitMillis(100); conf.setTestOnBorrow(true); pool = new MyJedisPool(conf, "192.168.163.201", 6382); // redis连接池 }}return pool; }/*** 释放或断开某个 jedis连接 * @param pool* @param jedis*/public static void release(MyJedisPool pool, Jedis jedis) {if(jedis != null) {pool.returnResource(jedis); }}
}
/*** 自定义redis连接池,继承自 JedisPool* 为啥要继承? 因为 returnBrokenResource和returnResource 这两个方法不是public */
public class MyJedisPool extends JedisPool{public MyJedisPool(final GenericObjectPoolConfig poolConfig, final String host, final int port) {super(poolConfig, host, port, Protocol.DEFAULT_TIMEOUT);}/*** 重写父类返回redis连接的方法*/@Overridepublic void returnBrokenResource(final Jedis resource) {if (resource != null) {returnBrokenResourceObject(resource);}} /*** 重写父类返回redis连接的方法*/@Overridepublic void returnResource(final Jedis resource) {if (resource != null) {try {resource.resetState();returnResourceObject(resource);} catch (Exception e) {returnBrokenResource(resource);throw new JedisException("Resource is returned to the pool as broken", e);}}}
}
【2】 linux 命令行连接redis,查看结果
[root@centos201 ~]# /usr/local/redis-cluster/bin/redis-cli -h 192.168.163.202 -p 6382
192.168.163.202:6382> keys *
1) "kaa"
2) "master2"
3) "master1"
192.168.163.202:6382> get kaa
"vaa"
192.168.163.202:6382>