java使用Redis连接池 

jar包为 jedis-2.9.0.jar+commons-pool2-2.4.2.jar

jar下载地址

  1. package com.test;
  2.  
  3. import redis.clients.jedis.Jedis;
  4. import redis.clients.jedis.JedisPool;
  5. import redis.clients.jedis.JedisPoolConfig;
  6.  
  7. public class RedisUtil {
  8. //Redis服务器IP
  9. private static String ADDR = "192.168.0.41";
  10.  
  11. //Redis的端口号
  12. private static int PORT = 6379;
  13.  
  14. //访问密码
  15. private static String AUTH = "admin";
  16.  
  17. //可用连接实例的最大数目,默认值为8;
  18. //如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
  19. private static int MAX_TOTAL = 8;
  20.  
  21. //最小空闲连接数, 默认0
  22. private static int MIN_IDLE=0;
  23.  
  24. //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
  25. //最大空闲连接数, 默认8个
  26. private static int MAX_IDLE = 8;
  27.  
  28. //获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1
  29. //等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
  30. private static int MAX_WAIT = -1;
  31.  
  32. private static int TIMEOUT = 10000;
  33.  
  34. //连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true
  35. private static boolean BLOCK_WHEN_EXHAUSTED = false;
  36.  
  37. //设置的逐出策略类名, 默认DefaultEvictionPolicy(当连接超过最大空闲时间,或连接数超过最大空闲连接数)
  38. private static String EVICTION_POLICY_CLASSNAME="org.apache.commons.pool2.impl.DefaultEvictionPolicy";
  39.  
  40. //是否启用pool的jmx管理功能, 默认true
  41. private static boolean JMX_ENABLED=true;
  42.  
  43. //MBean ObjectName = new ObjectName("org.apache.commons.pool2:type=GenericObjectPool,name=" + "pool" + i); 默认为"pool", JMX不熟,具体不知道是干啥的...默认就好.
  44. private static String JMX_NAME_PREFIX="pool";
  45.  
  46. //是否启用后进先出, 默认true
  47. private static boolean LIFO=true;
  48.  
  49. //逐出连接的最小空闲时间 默认1800000毫秒(30分钟)
  50. private static long MIN_EVICTABLE_IDLE_TIME_MILLIS=1800000L;
  51.  
  52. //对象空闲多久后逐出, 当空闲时间>该值 且 空闲连接>最大空闲数 时直接逐出,不再根据MinEvictableIdleTimeMillis判断 (默认逐出策略)
  53. private static long SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS=1800000L;
  54.  
  55. //每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3
  56. private static int NUM_TESTS_PER_EVICYION_RUN=3;
  57.  
  58. //在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
  59. //在获取连接的时候检查有效性, 默认false
  60. private static boolean TEST_ON_BORROW = false;
  61.  
  62. //在空闲时检查有效性, 默认false
  63. private static boolean TEST_WHILEIDLE=false;
  64.  
  65. //逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
  66. private static long TIME_BERWEEN_EVICTION_RUNS_MILLIS=-1;
  67.  
  68. private static JedisPool jedisPool = null;
  69.  
  70. /**
  71. * 初始化Redis连接池
  72. */
  73. static {
  74. try {
  75. JedisPoolConfig config = new JedisPoolConfig();
  76. config.setBlockWhenExhausted(BLOCK_WHEN_EXHAUSTED);
  77. config.setEvictionPolicyClassName(EVICTION_POLICY_CLASSNAME);
  78. config.setJmxEnabled(JMX_ENABLED);
  79. config.setJmxNamePrefix(JMX_NAME_PREFIX);
  80. config.setLifo(LIFO);
  81. config.setMaxIdle(MAX_IDLE);
  82. config.setMaxTotal(MAX_TOTAL);
  83. config.setMaxWaitMillis(MAX_WAIT);
  84. config.setMinEvictableIdleTimeMillis(MIN_EVICTABLE_IDLE_TIME_MILLIS);
  85. config.setMinIdle(MIN_IDLE);
  86. config.setNumTestsPerEvictionRun(NUM_TESTS_PER_EVICYION_RUN);
  87. config.setSoftMinEvictableIdleTimeMillis(SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS);
  88. config.setTestOnBorrow(TEST_ON_BORROW);
  89. config.setTestWhileIdle(TEST_WHILEIDLE);
  90. config.setTimeBetweenEvictionRunsMillis(TIME_BERWEEN_EVICTION_RUNS_MILLIS);
  91.  
  92. jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH);
  93. } catch (Exception e) {
  94. e.printStackTrace();
  95. }
  96. }
  97.  
  98. /**
  99. * 获取Jedis实例
  100. * @return
  101. */
  102. public synchronized static Jedis getJedis() {
  103. try {
  104. if (jedisPool != null) {
  105. Jedis resource = jedisPool.getResource();
  106. return resource;
  107. } else {
  108. return null;
  109. }
  110. } catch (Exception e) {
  111. e.printStackTrace();
  112. return null;
  113. }
  114. }
  115.  
  116. /**
  117. * 释放jedis资源
  118. * @param jedis
  119. */
  120. public static void close(final Jedis jedis) {
  121. if (jedis != null) {
  122. jedis.close();
  123. }
  124. }
  125. }

redis连接池 jedis-2.9.0.jar+commons-pool2-2.4.2.jar的更多相关文章

  1. Java Redis 连接池 Jedis 工具类

    import org.slf4j.Logger; import org.slf4j.LoggerFactory; import redis.clients.jedis.Jedis; import re ...

  2. Redis】Java中使用Jedis操作Redis(Maven导入包)、创建Redis连接池

    如果我们使用Java操作Redis, 需要确保已经安装了 redis 服务及 Java redis 驱动. Maven项目可以直接在pom.xml中加入jedis包驱动: <!-- https: ...

  3. python 基础 10.0 nosql 简介--redis 连接池及管道

    一. NOSQL 数据库简介 NoSQL 泛指非关系型的数据库.非关系型数据库与关系型数据库的差别 非关系型数据库的优势: 1.性能NOSQL 是基于键值对的,可以想象成表中的主键和值的对应关系,而且 ...

  4. Go语言之从0到1实现一个简单的Redis连接池

    Go语言之从0到1实现一个简单的Redis连接池 前言 最近学习了一些Go语言开发相关内容,但是苦于手头没有可以练手的项目,学的时候理解不清楚,学过容易忘. 结合之前组内分享时学到的Redis相关知识 ...

  5. java操作redis redis连接池

    redis作为缓存型数据库,越来越受到大家的欢迎,这里简单介绍一下java如何操作redis. 1.java连接redis java通过需要jedis的jar包获取Jedis连接. jedis-2.8 ...

  6. Redis连接池

    package com.lee.utils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; impor ...

  7. redis连接池操作

    /** * @类描述 redis 工具 * @功能名 POJO * @author zxf * @date 2014年11月25日 */public final class RedisUtil { p ...

  8. 三:Redis连接池、JedisPool详解、Redisi分布式

    单机模式: package com.ljq.utils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; ...

  9. redis连接池(JedisPool)资源归还及timeout详解

    转载. https://blog.csdn.net/yaomingyang/article/details/79043019 一.连接池资源类详解都在注释上 package redis.v1.clie ...

随机推荐

  1. 在ASP.NET里实现计算器代码的封装

    一.具体代码 Default2.aspx.cs public partial class Chapter1_Default2 : System.Web.UI.Page { protected void ...

  2. Node.js记录

    在智能社上听了一些关于node.js的视频,总结一小部分内容,都是总结老师讲的知识点,并且也是在不断学习的过程,所以会不断更新.也是为了怕自己遗忘一些知识点,同时现今没有什么项目可以让我去真正实践,这 ...

  3. 《软件工程和Python》第0周作业1

    写在前面的话 欢迎大家开始一段新的课程学习!从开博客开始吧.每次博客作业都会有评分,计入总成绩哦. 1.   截止日期 本次作业的提交截止时间:见老师要求 2.   作业要求 (1)建立个人技术博客和 ...

  4. css布局 弹性布局 和 网格布局

    这里就不写这两种布局的内容了 弹性布局链接:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html 网格布局链接:https://www.ji ...

  5. 西门子S7系列PLC的主要种类及应用软件

    德国西门子(SIEMENS)公司生产的可编程序控制器在我国的应用也相当广泛,在冶金.化工.印刷生产线等领域都有应用.西门子(SIEMENS)公司的PLC产品包括LOGO,S7-200,S7-300,S ...

  6. 关于localStorage 应用总结

    window.localStorage 设置数据几种方式 1.localStorage.setItem('name',c); 2.localStorage.name=c; 3.localStorage ...

  7. Vue2.0组件之间通信(转载)

    Vue中组件这个特性让不少前端er非常喜欢,我自己也是其中之一,它让前端的组件式开发更加合理和简单.笔者之前有写过一篇Vue2.0子父组件通信,这次我们就来聊一聊平级组件之间的通信. 首先我们先搭好开 ...

  8. 关于对i++,++i的理解

    i++,代表 先赋值,在加:++i,代表先自加再赋值:后台console例子中可以看到第一个例子:var a= i++;  i是等于1的:先赋值,所以打印出a =1的:而i++后为2:所以打印出a = ...

  9. html select options & vue h render

    html select options & vue h render https://developer.mozilla.org/en-US/docs/Web/HTML/Element/opt ...

  10. nginx通过配置empty_gif解决请求favicon 404的问题

    背景介绍 因为一些浏览器在访问网站时会默认去请求网站的favicon,但是我的网站(Tengine)上并没有这些icon图片,因此在访问日志里会出现大量的404错误,会触发一些没必要日志告警.我们可以 ...