redis连接池 jedis-2.9.0.jar+commons-pool2-2.4.2.jar
java使用Redis连接池
jar包为 jedis-2.9.0.jar+commons-pool2-2.4.2.jar
- package com.test;
- import redis.clients.jedis.Jedis;
- import redis.clients.jedis.JedisPool;
- import redis.clients.jedis.JedisPoolConfig;
- public class RedisUtil {
- //Redis服务器IP
- private static String ADDR = "192.168.0.41";
- //Redis的端口号
- private static int PORT = 6379;
- //访问密码
- private static String AUTH = "admin";
- //可用连接实例的最大数目,默认值为8;
- //如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
- private static int MAX_TOTAL = 8;
- //最小空闲连接数, 默认0
- private static int MIN_IDLE=0;
- //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
- //最大空闲连接数, 默认8个
- private static int MAX_IDLE = 8;
- //获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1
- //等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
- private static int MAX_WAIT = -1;
- private static int TIMEOUT = 10000;
- //连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true
- private static boolean BLOCK_WHEN_EXHAUSTED = false;
- //设置的逐出策略类名, 默认DefaultEvictionPolicy(当连接超过最大空闲时间,或连接数超过最大空闲连接数)
- private static String EVICTION_POLICY_CLASSNAME="org.apache.commons.pool2.impl.DefaultEvictionPolicy";
- //是否启用pool的jmx管理功能, 默认true
- private static boolean JMX_ENABLED=true;
- //MBean ObjectName = new ObjectName("org.apache.commons.pool2:type=GenericObjectPool,name=" + "pool" + i); 默认为"pool", JMX不熟,具体不知道是干啥的...默认就好.
- private static String JMX_NAME_PREFIX="pool";
- //是否启用后进先出, 默认true
- private static boolean LIFO=true;
- //逐出连接的最小空闲时间 默认1800000毫秒(30分钟)
- private static long MIN_EVICTABLE_IDLE_TIME_MILLIS=1800000L;
- //对象空闲多久后逐出, 当空闲时间>该值 且 空闲连接>最大空闲数 时直接逐出,不再根据MinEvictableIdleTimeMillis判断 (默认逐出策略)
- private static long SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS=1800000L;
- //每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3
- private static int NUM_TESTS_PER_EVICYION_RUN=3;
- //在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
- //在获取连接的时候检查有效性, 默认false
- private static boolean TEST_ON_BORROW = false;
- //在空闲时检查有效性, 默认false
- private static boolean TEST_WHILEIDLE=false;
- //逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
- private static long TIME_BERWEEN_EVICTION_RUNS_MILLIS=-1;
- private static JedisPool jedisPool = null;
- /**
- * 初始化Redis连接池
- */
- static {
- try {
- JedisPoolConfig config = new JedisPoolConfig();
- config.setBlockWhenExhausted(BLOCK_WHEN_EXHAUSTED);
- config.setEvictionPolicyClassName(EVICTION_POLICY_CLASSNAME);
- config.setJmxEnabled(JMX_ENABLED);
- config.setJmxNamePrefix(JMX_NAME_PREFIX);
- config.setLifo(LIFO);
- config.setMaxIdle(MAX_IDLE);
- config.setMaxTotal(MAX_TOTAL);
- config.setMaxWaitMillis(MAX_WAIT);
- config.setMinEvictableIdleTimeMillis(MIN_EVICTABLE_IDLE_TIME_MILLIS);
- config.setMinIdle(MIN_IDLE);
- config.setNumTestsPerEvictionRun(NUM_TESTS_PER_EVICYION_RUN);
- config.setSoftMinEvictableIdleTimeMillis(SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS);
- config.setTestOnBorrow(TEST_ON_BORROW);
- config.setTestWhileIdle(TEST_WHILEIDLE);
- config.setTimeBetweenEvictionRunsMillis(TIME_BERWEEN_EVICTION_RUNS_MILLIS);
- jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * 获取Jedis实例
- * @return
- */
- public synchronized static Jedis getJedis() {
- try {
- if (jedisPool != null) {
- Jedis resource = jedisPool.getResource();
- return resource;
- } else {
- return null;
- }
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * 释放jedis资源
- * @param jedis
- */
- public static void close(final Jedis jedis) {
- if (jedis != null) {
- jedis.close();
- }
- }
- }
redis连接池 jedis-2.9.0.jar+commons-pool2-2.4.2.jar的更多相关文章
- Java Redis 连接池 Jedis 工具类
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import redis.clients.jedis.Jedis; import re ...
- Redis】Java中使用Jedis操作Redis(Maven导入包)、创建Redis连接池
如果我们使用Java操作Redis, 需要确保已经安装了 redis 服务及 Java redis 驱动. Maven项目可以直接在pom.xml中加入jedis包驱动: <!-- https: ...
- python 基础 10.0 nosql 简介--redis 连接池及管道
一. NOSQL 数据库简介 NoSQL 泛指非关系型的数据库.非关系型数据库与关系型数据库的差别 非关系型数据库的优势: 1.性能NOSQL 是基于键值对的,可以想象成表中的主键和值的对应关系,而且 ...
- Go语言之从0到1实现一个简单的Redis连接池
Go语言之从0到1实现一个简单的Redis连接池 前言 最近学习了一些Go语言开发相关内容,但是苦于手头没有可以练手的项目,学的时候理解不清楚,学过容易忘. 结合之前组内分享时学到的Redis相关知识 ...
- java操作redis redis连接池
redis作为缓存型数据库,越来越受到大家的欢迎,这里简单介绍一下java如何操作redis. 1.java连接redis java通过需要jedis的jar包获取Jedis连接. jedis-2.8 ...
- Redis连接池
package com.lee.utils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; impor ...
- redis连接池操作
/** * @类描述 redis 工具 * @功能名 POJO * @author zxf * @date 2014年11月25日 */public final class RedisUtil { p ...
- 三:Redis连接池、JedisPool详解、Redisi分布式
单机模式: package com.ljq.utils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; ...
- redis连接池(JedisPool)资源归还及timeout详解
转载. https://blog.csdn.net/yaomingyang/article/details/79043019 一.连接池资源类详解都在注释上 package redis.v1.clie ...
随机推荐
- 在ASP.NET里实现计算器代码的封装
一.具体代码 Default2.aspx.cs public partial class Chapter1_Default2 : System.Web.UI.Page { protected void ...
- Node.js记录
在智能社上听了一些关于node.js的视频,总结一小部分内容,都是总结老师讲的知识点,并且也是在不断学习的过程,所以会不断更新.也是为了怕自己遗忘一些知识点,同时现今没有什么项目可以让我去真正实践,这 ...
- 《软件工程和Python》第0周作业1
写在前面的话 欢迎大家开始一段新的课程学习!从开博客开始吧.每次博客作业都会有评分,计入总成绩哦. 1. 截止日期 本次作业的提交截止时间:见老师要求 2. 作业要求 (1)建立个人技术博客和 ...
- css布局 弹性布局 和 网格布局
这里就不写这两种布局的内容了 弹性布局链接:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html 网格布局链接:https://www.ji ...
- 西门子S7系列PLC的主要种类及应用软件
德国西门子(SIEMENS)公司生产的可编程序控制器在我国的应用也相当广泛,在冶金.化工.印刷生产线等领域都有应用.西门子(SIEMENS)公司的PLC产品包括LOGO,S7-200,S7-300,S ...
- 关于localStorage 应用总结
window.localStorage 设置数据几种方式 1.localStorage.setItem('name',c); 2.localStorage.name=c; 3.localStorage ...
- Vue2.0组件之间通信(转载)
Vue中组件这个特性让不少前端er非常喜欢,我自己也是其中之一,它让前端的组件式开发更加合理和简单.笔者之前有写过一篇Vue2.0子父组件通信,这次我们就来聊一聊平级组件之间的通信. 首先我们先搭好开 ...
- 关于对i++,++i的理解
i++,代表 先赋值,在加:++i,代表先自加再赋值:后台console例子中可以看到第一个例子:var a= i++; i是等于1的:先赋值,所以打印出a =1的:而i++后为2:所以打印出a = ...
- html select options & vue h render
html select options & vue h render https://developer.mozilla.org/en-US/docs/Web/HTML/Element/opt ...
- nginx通过配置empty_gif解决请求favicon 404的问题
背景介绍 因为一些浏览器在访问网站时会默认去请求网站的favicon,但是我的网站(Tengine)上并没有这些icon图片,因此在访问日志里会出现大量的404错误,会触发一些没必要日志告警.我们可以 ...