JAVA redis连接池
来源:互联网 发布:mac炉石传说加速器 编辑:程序博客网 时间:2024/04/29 01:09
/** * 缓存连接池 * @author rcj */@Componentpublic class CacheService {private static final Logger logger = Logger.getLogger(CacheService.class);private static JedisPool jedisPool; static{String host=ConfigContext.getStringValue("redis.host");int port=Integer.valueOf(ConfigContext.getStringValue("redis.port"));String password=ConfigContext.getStringValue("redis.pass");int timeout=Integer.valueOf(ConfigContext.getStringValue("redis.timeout"));int maxIdle=Integer.valueOf(ConfigContext.getStringValue("redis.maxIdle"));int maxTotal=Integer.valueOf(ConfigContext.getStringValue("redis.maxActive"));int maxWait=Integer.valueOf(ConfigContext.getStringValue("redis.maxWait"));JedisPoolConfig config = new JedisPoolConfig();config.setMaxWaitMillis(maxWait); // 最大等待时间config.setMaxTotal(maxTotal); // 最大连接数config.setMinIdle(maxIdle); // 允许最小的空闲连接数config.setTestOnBorrow(false); // 申请到连接时是否效验连接是否有效,对性能有影响,建议关闭config.setTestOnReturn(false); // 使用完连接放回连接池时是否效验连接是否有效,对性能有影响,建议关闭config.setTestWhileIdle(true); // 申请到连接时,如果空闲时间大于TimeBetweenEvictionRunsMillis时间,效验连接是否有效,建议开启,对性能有效不大config.setTimeBetweenEvictionRunsMillis(30000); //TestWhileIdle的判断依据jedisPool=new JedisPool(config, host, port, timeout,password); } /** * 获取Jedis对象 * @return */ public static Jedis getJedis(){ return jedisPool.getResource(); } /** * 设置缓存对象 * @param key * @param value */ public void set(String key,String value){ Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); jedis.set(key, value); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); } } /** * 设置缓存对象 * @param key * @param value */ public void lset(String key,int index,String value){ Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); jedis.lset(key, index, value); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); } } /** * 删除缓存对象 * @param key * @param value */ public Long lrem(String key,long count,String value){ Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.lrem(key, count, value); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); } } /** * 删除缓存对象 * @param key * @param value */ public Long lrem(byte[] key,long count,byte[] value){ Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.lrem(key, count, value); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); } } /** * 设置缓存对象 * @param key * @param value */ public void set(byte[] key,byte[] value){ Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); jedis.set(key, value); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); } } /** * 获取缓存对象 * @param key * @return */ public String get(String key){ Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.get(key); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); } } /** * 获取缓存对象 * @param key * @return */ public byte[] get(byte[] key){ Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.get(key); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); } } /** * 删除缓存对象 * @param key */ public void del(String key){ Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); jedis.del(key); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); } } /** * 判断key是否存在 * @param key * @return */ public boolean exists(String key){ Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.exists(key); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); } } public Long llen(String key) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.llen(key); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} public Long llen(byte[] key) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.llen(key); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} public Long lpush(String key, String[] strings) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.lpush(key,strings); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} public Boolean hexists(byte[] key, byte[] field) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.hexists(key,field); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} public byte[] hget(byte[] key, byte[] field) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.hget(key,field); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} public Long hlen(byte[] key) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.hlen(key); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} public Long hlen(String key) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.hlen(key); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} public String hget(String key, String field) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.hget(key,field); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} public Map<String,String> hgetAll(String key) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.hgetAll(key); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} public List<String> lrange(String key, long start, long end) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.lrange(key,start,end); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} public List<byte[]> lrange(byte[] key, long start, long end) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.lrange(key,start,end); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} public Long rpush(String key, String jsonStr) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.rpush(key,jsonStr); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} public Long lpush(String key, String strings) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.lpush(key,strings); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} public String rpop(String key) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.rpop(key); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} public Long hset(String key, String field, String value) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.hset(key,field,value); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} public Boolean hexists(String key, String field) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.hexists(key,field); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} public Long hset(byte[] key, byte[] field, byte[] value) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.hset(key,field,value); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} public Long hdel(byte[] key, byte[] byteInfo) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.hdel(key,byteInfo); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} public Long hdel(String key, String byteInfo) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.hdel(key,byteInfo); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} public String hmset(String key, Map<String, String> hash) { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); return jedis.hmset(key,hash); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} /* * */ public void expire(String key, int seconds){ Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); jedis.expire(key,seconds); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); } } public void flushdb() { Jedis jedis = null; boolean broken = false; try{ jedis = jedisPool.getResource(); jedis.flushDB(); }catch (JedisException e) { broken = handleJedisException(e); throw e; } finally { closeResource(jedis, broken); }} /** * Handle jedisException, write log and return whether the connection is broken. */ protected boolean handleJedisException(JedisException jedisException) { if (jedisException instanceof JedisConnectionException) { logger.error("Redis connection " + jedisPool + " lost.", jedisException); } else if (jedisException instanceof JedisDataException) { if ((jedisException.getMessage() != null) && (jedisException.getMessage().indexOf("READONLY") != -1)) { logger.error("Redis connection " + jedisPool + " are read-only slave.", jedisException); } else { // dataException, isBroken=false return false; } } else { logger.error("Jedis exception happen.", jedisException); } return true; } /** * Return jedis connection to the pool, call different return methods depends on the conectionBroken status. */ @SuppressWarnings("deprecation")public static void closeResource(Jedis jedis, boolean conectionBroken) { try { if (conectionBroken) { jedisPool.returnBrokenResource(jedis); } else { jedisPool.returnResource(jedis); } } catch (Exception e) { logger.error("return back jedis failed, will fore close the jedis.", e); if(jedis!=null){ jedis.close(); } } } }
使用:
@Autowired
private CacheService jedis;
0 0
- JAVA redis连接池
- java操作redis redis连接池
- Java操作redis连接池
- redis Java客户端jredis连接池
- redis java客户端Jedis 连接池实现
- java 操作redis (非连接池)
- java 操作redis (Spring 连接池)
- Java的Redis连接池代码
- Java开发Redis连接池工具类
- java配置和使用redis连接池
- java连接redis
- Redis Java连接操作
- Redis Java连接使用
- Java连接Redis
- Java连接Redis
- java连接Redis
- java连接redis
- java接口连接redis
- 排序算法-总结
- 公式节点可用符号
- oracle 触发器详解
- Git 常用命令
- Vue生命周期,手动挂载
- JAVA redis连接池
- Roboware的安装与使用
- C和C++混合编程
- 在训练自己的检测器中遇到的问题记录
- JEESITE登录流程简单梳理
- 【已解决】windows Update更新失败(亲测可用)
- JWT技术详解
- 电影售票系统(3)
- git 合并head 到master