怎么用Java实现redis连接池
这篇文章主要介绍“怎么用Java实现redis连接池”,在日常操作中,相信很多人在怎么用Java实现redis连接池问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Java实现redis连接池”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
1.Redis 客户端1.1.Redis Desktop Manager使用称手的工具,做起事来 事半功倍
,用 redis-cli
自然不错。我推荐一款我经常用的 Redis
可视化工具,Redis Desktop Manager
。
池技术被广泛使用在系统开发中,像
JDBC
连接池、线程池等。连连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。
在处理一个任务时,我们大多情况要在数毫秒级别就完成,如果重复创建、关闭资源,会占用较长时间和大量系统资源。
使用连接池优势
减少连接创建时间
连接在系统初始化时就创建完成,需要时直接从池中取用,减少了时间开销。
简化的编程模式
当使用连接池时,每一个单独的线程能够像创建了一个自己的 JDBC 连接一样操作。
受控的资源使用
连接池能够控制一个模块的资源占用率,不会让一个模块资源占用过高,导致整个系统崩溃。
2.1.Redis 连接池2.1.1.前言引入在以前没有开源连接池时,很多人自写连接池工具,简单来说就是创建一个集合,存放一批连接,动态维护着。保证每个连接都是有效的。
2.1.2.Redis 连接池本教程涉及到的一些代码都是 Java 语言编写。
maven
依赖,引入 pom.xml
文件
pom.xml
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.3.0</version></dependency>
RedisUtil.java
publicfinalclassRedisUtil{//IP地址privatestaticStringADDR="127.0.0.1";//端口号privatestaticintPORT=6379;//redis服务端密码privatestaticStringPWD="123456";//可用连接实例最大数目,默认为8,若赋值-1,表示不被限制privatestaticIntegerMAX_TOTAL=1024;//控制一个连接池最多有多少个状态为空闲的jedis实例,默认值为8privatestaticIntegerMAX_IDLE=200;//等待可用连接最大的等待时间,单位ms,默认值-1,表示永不超时,若等待超时抛出JedisConnectionExceptionprivatestaticIntegerMAX_WAIT_MILLIS=10000;//超时privatestaticIntegerTIMEOUT=10000;//在用一个jedis实例时,是否提前进行validate操作,若结果为true则jedis实例可用privatestaticBooleanTEST_ON_BORROW=true;//jedis连接池privatestaticJedisPooljedisPool=null;/***初始化jedis连接池的静态块,RedisPool第一次类加载时执行,以后便不再执行*/static{try{JedisPoolConfigconf=newJedisPoolConfig();/**高版本jedisjar中JedisPoolConfig没有setMaxActive和setMaxWait属性,因为官方在高版本*中启用了此方法,用以下两个属性替换*maxActive==>maxTotal*maxWait==>maxWaitMillis*///设置连接实例最大数目conf.setMaxTotal(MAX_TOTAL);//设置最多多少空闲的jedis实例conf.setMaxIdle(MAX_IDLE);//设置等待可用连接的最大时间conf.setMaxWaitMillis(MAX_WAIT_MILLIS);//设置是否提前进行测试借用conf.setTestOnBorrow(TEST_ON_BORROW);//新建jedis连接池jedisPool=newJedisPool(conf,ADDR,PORT,TIMEOUT,PWD);}catch(Exceptione){e.printStackTrace();}}/**获取jedis实例来操作数据,每次使用完要将连接返回给连接池jedis.close()*@return*/publicsynchronizedstaticJedisgetRedis(){try{if(jedisPool!=null){//获取jedis实例Jedisjedis=jedisPool.getResource();returnjedis;}else{System.out.println("没有找到Jedis连接池!");returnnull;}}catch(Exceptione){e.printStackTrace();returnnull;}}/**用来回收Jedis对象资源,用户需要用到此方法释放资源,否则一直占用资源,在新版本中,`returnResource(jedis)将被废弃不推荐使用,`直接调用`jedis.close();`归还连接到连接池。*@paramJedisjedis*/publicsynchronizedstaticvoidreturnJedis(Jedisjedis){try{if(jedis!=null){//回收jedis对象资源jedisPool.returnResource(jedis);System.out.println("Jedis被成功回收!");}}catch(Exceptione){e.printStackTrace();}}}
到此,关于“怎么用Java实现redis连接池”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。