• 技术文章 >Java >java教程

    java客户端Jedis操作Redis Sentinel实现连接池的代码分享

    黄舟黄舟2018-05-26 13:51:03原创1957
    下面小编就为大家带来一篇java客户端Jedis操作Redis Sentinel 连接池的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    pom.xml配置

    <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-redis</artifactId> 
      <version>1.0.2.RELEASE</version> 
    </dependency> 
    <dependency> 
      <groupId>redis.clients</groupId> 
      <artifactId>jedis</artifactId> 
      <version>2.7.0</version> 
      <type>jar</type> 
      <scope>compile</scope> 
    </dependency> 
    ?
    public class JedisPoolUtil { 
       
      private static JedisSentinelPool pool = null; 
     
      public static Properties getJedisProperties() { 
     
        Properties config = new Properties(); 
        InputStream is = null; 
        try { 
          is = JedisPoolUtil.class.getClassLoader().getResourceAsStream("cacheConfig.properties"); 
          config.load(is); 
        } catch (IOException e) { 
          logger.error("", e); 
        } finally { 
          if (is != null) { 
            try { 
              is.close(); 
            } catch (IOException e) { 
              logger.error("", e); 
            } 
          } 
        } 
        return config; 
      } 
     
      /** 
       * 创建连接池 
       * 
       */
      private static void createJedisPool() { 
        // 建立连接池配置参数 
        JedisPoolConfig config = new JedisPoolConfig(); 
        Properties prop = getJedisProperties(); 
        // 设置最大连接数 
        config.setMaxTotal(StringUtil.nullToInteger(prop.getProperty("MAX_ACTIVE"))); 
        // 设置最大阻塞时间,记住是毫秒数milliseconds 
        config.setMaxWaitMillis(StringUtil.nullToInteger(prop.getProperty("MAX_WAIT"))); 
        // 设置空间连接 
        config.setMaxIdle(StringUtil.nullToInteger(prop.getProperty("MAX_IDLE"))); 
        // jedis实例是否可用 
        boolean borrow = prop.getProperty("TEST_ON_BORROW") == "false" ? false : true; 
        config.setTestOnBorrow(borrow); 
        // 创建连接池 
    //   pool = new JedisPool(config, prop.getProperty("ADDR"), 
    StringUtil.nullToInteger(prop.getProperty("PORT")), StringUtil.nullToInteger(prop.getProperty("TIMEOUT")));
    // 线程数量限制,IP地址,端口,超时时间 
        //获取redis密码 
        String password = StringUtil.nullToString(prop.getProperty("PASSWORD")); 
     
         String masterName = "mymaster"; 
        Set<String> sentinels = new HashSet<String>(); 
        sentinels.add("192.168.137.128:26379"); 
        sentinels.add("192.168.137.128:26380"); 
        sentinels.add("192.168.137.128:26381"); 
        pool = new JedisSentinelPool(masterName, sentinels, config); 
      } 
     
      /** 
       * 在多线程环境同步初始化 
       */
      private static synchronized void poolInit() { 
        if (pool == null) 
          createJedisPool(); 
      } 
     
      /** 
       * 获取一个jedis 对象 
       * 
       * @return 
       */
      public static Jedis getJedis() { 
        if (pool == null) 
          poolInit(); 
        return pool.getResource(); 
      } 
     
      /** 
       * 释放一个连接 
       * 
       * @param jedis 
       */
      public static void returnRes(Jedis jedis) { 
        pool.returnResource(jedis); 
      } 
     
      /** 
       * 销毁一个连接 
       * 
       * @param jedis 
       */
      public static void returnBrokenRes(Jedis jedis) { 
        pool.returnBrokenResource(jedis); 
      } 
       
       
      public static void main(String[] args){ 
        Jedis jedis=getJedis(); 
         
      } 
     
    }

    以上就是java客户端Jedis操作Redis Sentinel实现连接池的代码分享的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:Java8 StringJoiner的代码详解 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 一起来分析java设计模式之单例• Java数据结构之单链表与OJ题• 一文搞懂Java线程池实现原理• 详细介绍Java正则表达式之单字符匹配和预定义字符• Java总结分享之反射、枚举、Lambda表达式
    1/1

    PHP中文网