redis连接池
【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>總結
- 上一篇: redis主从复制部署策略+jedis设
- 下一篇: 转: 记录centos7 安装erlan