文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Redis连接池配置及初始化实现

2024-04-02 19:55

关注

加入db选择后的redis连接池配置代码


public class RedisPoolConfigure {

 //Redis服务器IP
 private String ADDR ;
 
 //Redis的端口号
 private int PORT ;
 
 //可用连接实例的最大数目
 private int MAX_ACTIVE ;
 
 //pool中的idle jedis实例数
 private int MAX_IDLE ;
 
 //等待可用连接的最大时间,单位毫秒
 private int MAX_WAIT ;
 //超时时间,单位毫秒
 private int TIME_OUT ;
 //设置的逐出策略类名, 默认DefaultEvictionPolicy(当连接超过最大空闲时间,或连接数超过最大空闲连接数)
 private String EVICTION_POLICY_CLASS_NAME ;
 
 //连接耗尽时是否阻塞, false报异常,ture阻塞直到超时
 private boolean BLOCK_WHEN_EXHAUSTED;
 
 //是否启用pool的jmx管理功能, 默认true
 private boolean JMX_ENABLED;
 
 //在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
 private boolean TEST_ON_BORROW ;
 
 //服务器密码
 private String REDIS_PASS;
 //redis选择数据库DB
 private int REDIS_DB;
 
 
 private String LUASHA;
 
 private Map<String, String> configure = null;
 
 
 public RedisPoolConfigure(){
  try {
  configure = new ConfigureReader().readProperties("redis.properties");
 } catch (IOException e) {
 e.printStackTrace();
 }
  this.ADDR = configure.get("REDIS.ADDR");
  this.LUASHA = configure.get("REDIS.LUA_HASH");
  this.EVICTION_POLICY_CLASS_NAME = configure.get("REDIS.EVICTION_POLICY_CLASS_NAME");
  this.BLOCK_WHEN_EXHAUSTED = Boolean.parseBoolean(configure.get("REDIS.BLOCK_WHEN_EXHAUSTED"));
  this.JMX_ENABLED = Boolean.parseBoolean(configure.get("REDIS.JMX_ENABLED"));
  this.TEST_ON_BORROW = Boolean.parseBoolean(configure.get("REDIS.TEST_ON_BORROW"));
  this.REDIS_PASS=configure.get("REDIS.PASS");
  
  if(typeCheck()){
  this.PORT = new Integer(configure.get("REDIS.PORT"));
  this.MAX_ACTIVE = new Integer(configure.get("REDIS.MAX_ACTIVE"));
  this.MAX_IDLE = new Integer(configure.get("REDIS.MAX_IDLE"));
  this.MAX_WAIT = new Integer(configure.get("REDIS.MAX_WAIT"));
  this.REDIS_DB=new Integer(configure.get("REDIS.DB"));
  }else{
  System.out.println("error");
  }
 }
 
 
 private boolean typeCheck() {
 if (isNumeric(configure.get("REDIS.PORT")) 
 && isNumeric(configure.get("REDIS.MAX_ACTIVE"))
 && isNumeric(configure.get("REDIS.MAX_IDLE")) 
 && isNumeric(configure.get("REDIS.MAX_WAIT"))
 && isNumeric(configure.get("REDIS.DB"))) {
 return true;
 } 
 return false;
 }

 public String getADDR() {
 return ADDR;
 }

 public int getPORT() {
 return PORT;
 }


 public int getMAX_ACTIVE() {
 return MAX_ACTIVE;
 }

 public int getMAX_IDLE() {
 return MAX_IDLE;
 }

 public int getMAX_WAIT() {
 return MAX_WAIT;
 }

 public int getTIME_OUT() {
 return TIME_OUT;
 }

 public boolean isTEST_ON_BORROW() {
 return TEST_ON_BORROW;
 }

 public String getEVICTION_POLICY_CLASS_NAME() {
 return EVICTION_POLICY_CLASS_NAME;
 }

 public boolean isBLOCK_WHEN_EXHAUSTED() {
 return BLOCK_WHEN_EXHAUSTED;
 }

 public boolean isJMX_ENABLED() {
 return JMX_ENABLED;
 }
 
 public boolean isNumeric(String str) {
 if(str==null || "".equals(str)){
 return false;
 }
 for (int i = 0; i < str.length(); i++) {
 if (!Character.isDigit(str.charAt(i))) {
 return false;
 }
 }
 return true;
 }

 public String getLUASHA() {
 return LUASHA;
 }

 public void setLUASHA(String lUASHA) {
 LUASHA = lUASHA;
 }

 public String getREDIS_PASS() {
 return REDIS_PASS;
 }

 public void setREDIS_PASS(String rEDIS_PASS) {
 REDIS_PASS = rEDIS_PASS;
 }

 public int getREDIS_DB() {
 return REDIS_DB;
 }

 public void setREDIS_DB(int rEDIS_DB) {
 REDIS_DB = rEDIS_DB;
 }
}

redis连接池初始化、获取Jedis实例和释放Jedis实例



public class RedisPool {
 
 private static JedisPool jedisPool = null;
 
 
 static {
  try {
   RedisPoolConfigure configure = new RedisPoolConfigure();
   JedisPoolConfig config = new JedisPoolConfig();
   config.setBlockWhenExhausted(configure.isBLOCK_WHEN_EXHAUSTED());
   config.setEvictionPolicyClassName(configure.getEVICTION_POLICY_CLASS_NAME());
   config.setJmxEnabled(configure.isJMX_ENABLED());
   config.setMaxIdle(configure.getMAX_IDLE());
   config.setMaxTotal(configure.getMAX_ACTIVE());
   config.setMaxWaitMillis(configure.getMAX_WAIT());
   config.setTestOnBorrow(configure.isTEST_ON_BORROW());
   jedisPool = new JedisPool(config, configure.getADDR(), configure.getPORT(), configure.getTIME_OUT(),configure.getREDIS_PASS(),configure.getREDIS_DB());
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 
 
 public synchronized static Jedis getJedis() {
  Jedis resource=null;
  try {
   if (jedisPool != null) {
    resource = jedisPool.getResource();
    return resource;
   } else {
    return null;
   }
  } catch (Exception e) {
   e.printStackTrace();
   return null;
  }
 }
 
 
 
 public static void close(final Jedis jedis) {
  if (jedis != null) {
   jedis.close();
  }
 }
 
 public static JedisPool getJedisPool() {
 return jedisPool;
 }
}

到此这篇关于Redis连接池配置及初始化实现的文章就介绍到这了,更多相关Redis连接池配置内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯