jedis调用redis之pool
2016-03-09 17:44
543 查看
package com.alex.xiyoubang; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class PoolUtil { private static JedisPool pool = null; public static JedisPool getPool() { if (pool == null) { JedisPoolConfig config = new JedisPoolConfig(); //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。 config.setMaxIdle(1); config.setMaxTotal(20); //表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException; config.setMaxWaitMillis(6000); //在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的; config.setTestOnBorrow(true); pool = new JedisPool(config, "192.168.1.171", 6379); } return pool; } public static void returnResource(JedisPool pool, Jedis redis) { if (redis != null) { pool.returnResource(redis); } } public static String get(String key){ String value = null; JedisPool pool = null; Jedis jedis = null; try { pool = getPool(); jedis = pool.getResource(); value = jedis.get(key); } catch (Exception e) { //释放redis对象 pool.returnBrokenResource(jedis); e.printStackTrace(); } finally { //返还到连接池 returnResource(pool, jedis); } return value; } public static String set(String key,String val){ String value = null; JedisPool pool = null; Jedis jedis = null; try { pool = getPool(); jedis = pool.getResource(); jedis.flushDB(); value = jedis.set(key,val); } catch (Exception e) { //释放redis对象 pool.returnBrokenResource(jedis); e.printStackTrace(); } finally { //返还到连接池 returnResource(pool, jedis); } return value; } public static void main(String[] args) { set("name", "Alex"); System.out.println(get("name")); } }
JedisPoolConfig源码属性
public class JedisPoolConfig extends GenericObjectPoolConfig { public JedisPoolConfig() { setTestWhileIdle(true); setMinEvictableIdleTimeMillis(60000L); setTimeBetweenEvictionRunsMillis(30000L); setNumTestsPerEvictionRun(-1); } } public class GenericObjectPoolConfig extends BaseObjectPoolConfig { public GenericObjectPoolConfig() { maxTotal = 8; maxIdle = 8; minIdle = 0; } public int getMaxTotal() { return maxTotal; } public void setMaxTotal(int maxTotal) { this.maxTotal = maxTotal; } public int getMaxIdle() { return maxIdle; } public void setMaxIdle(int maxIdle) { this.maxIdle = maxIdle; } public int getMinIdle() { return minIdle; } public void setMinIdle(int minIdle) { this.minIdle = minIdle; } public GenericObjectPoolConfig clone() { return (GenericObjectPoolConfig)super.clone(); CloneNotSupportedException e; e; throw new AssertionError(); } public volatile Object clone() throws CloneNotSupportedException { return clone(); } public static final int DEFAULT_MAX_TOTAL = 8; public static final int DEFAULT_MAX_IDLE = 8; public static final int DEFAULT_MIN_IDLE = 0; private int maxTotal; private int maxIdle; private int minIdle; } public abstract class BaseObjectPoolConfig implements Cloneable { public BaseObjectPoolConfig() { lifo = true; maxWaitMillis = -1L; minEvictableIdleTimeMillis = 1800000L; softMinEvictableIdleTimeMillis = 1800000L; numTestsPerEvictionRun = 3; evictionPolicyClassName = "org.apache.commons.pool2.impl.DefaultEvictionPolicy"; testOnBorrow = false; testOnReturn = false; testWhileIdle = false; timeBetweenEvictionRunsMillis = -1L; blockWhenExhausted = true; jmxEnabled = true; jmxNamePrefix = "pool"; } public boolean getLifo() { return lifo; } public void setLifo(boolean lifo) { this.lifo = lifo; } public long getMaxWaitMillis() { return maxWaitMillis; } public void setMaxWaitMillis(long maxWaitMillis) { this.maxWaitMillis = maxWaitMillis; } public long getMinEvictableIdleTimeMillis() { return minEvictableIdleTimeMillis; } public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) { this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis; } public long getSoftMinEvictableIdleTimeMillis() { return softMinEvictableIdleTimeMillis; } public void setSoftMinEvictableIdleTimeMillis(long softMinEvictableIdleTimeMillis) { this.softMinEvictableIdleTimeMillis = softMinEvictableIdleTimeMillis; } public int getNumTestsPerEvictionRun() { return numTestsPerEvictionRun; } public void setNumTestsPerEvictionRun(int numTestsPerEvictionRun) { this.numTestsPerEvictionRun = numTestsPerEvictionRun; } public boolean getTestOnBorrow() { return testOnBorrow; } public void setTestOnBorrow(boolean testOnBorrow) { this.testOnBorrow = testOnBorrow; } public boolean getTestOnReturn() { return testOnReturn; } public void setTestOnReturn(boolean testOnReturn) { this.testOnReturn = testOnReturn; } public boolean getTestWhileIdle() { return testWhileIdle; } public void setTestWhileIdle(boolean testWhileIdle) { this.testWhileIdle = testWhileIdle; } public long getTimeBetweenEvictionRunsMillis() { return timeBetweenEvictionRunsMillis; } public void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) { this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis; } public String getEvictionPolicyClassName() { return evictionPolicyClassName; } public void setEvictionPolicyClassName(String evictionPolicyClassName) { this.evictionPolicyClassName = evictionPolicyClassName; } public boolean getBlockWhenExhausted() { return blockWhenExhausted; } public void setBlockWhenExhausted(boolean blockWhenExhausted) { this.blockWhenExhausted = blockWhenExhausted; } public boolean getJmxEnabled() { return jmxEnabled; } public void setJmxEnabled(boolean jmxEnabled) { this.jmxEnabled = jmxEnabled; } public String getJmxNamePrefix() { return jmxNamePrefix; } public void setJmxNamePrefix(String jmxNamePrefix) { this.jmxNamePrefix = jmxNamePrefix; } public static final boolean DEFAULT_LIFO = true; public static final long DEFAULT_MAX_WAIT_MILLIS = -1L; public static final long DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS = 1800000L; public static final long DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS = -1L; public static final int DEFAULT_NUM_TESTS_PER_EVICTION_RUN = 3; public static final boolean DEFAULT_TEST_ON_BORROW = false; public static final boolean DEFAULT_TEST_ON_RETURN = false; public static final boolean DEFAULT_TEST_WHILE_IDLE = false; public static final long DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS = -1L; public static final boolean DEFAULT_BLOCK_WHEN_EXHAUSTED = true; public static final boolean DEFAULT_JMX_ENABLE = true; public static final String DEFAULT_JMX_NAME_PREFIX = "pool"; public static final String DEFAULT_EVICTION_POLICY_CLASS_NAME = "org.apache.commons.pool2.impl.DefaultEvictionPolicy"; private boolean lifo; private long maxWaitMillis; private long minEvictableIdleTimeMillis; private long softMinEvictableIdleTimeMillis; private int numTestsPerEvictionRun; private String evictionPolicyClassName; private boolean testOnBorrow; private boolean testOnReturn; private boolean testWhileIdle; private long timeBetweenEvictionRunsMillis; private boolean blockWhenExhausted; private boolean jmxEnabled; private String jmxNamePrefix; }
相关文章推荐
- jedis调用redis之分页
- Redis同步(主从复制)
- Redis性能优化
- Linux下php安装Redis扩展
- redis命令总结
- 简单的node连接redis及操作
- 高性能网站架构之缓存篇—Redis集群搭建
- redis configuration
- 【Redis 内存优化】节约内存:Instagram的Redis实践
- php Windows系统 wamp集成环境下redis的使用
- CentOS 6.5 x64 Redis 安装
- spring-data-redis 的序列化问题
- JFinal redis cluster集群插件
- Windows下Redis的安装使用
- Redis 如何导出数据
- Redis应用场景[分享]
- Spring Data操作Redis时,发现key值出现 \xac\xed\x00\x05t\x00\tb
- redis 问题解决(MISCONF Redis is configured to save RDB snapshots)
- 阿里云ECS Ubuntu安装PHP+Mysql+Apache+Nginx+Redis+Discuz
- jedis调用redis之SortSet