content: package com.neroarc.blog.myblog.utils;
  
  import redis.clients.jedis.Jedis;
  import redis.clients.jedis.JedisPool;
  import redis.clients.jedis.JedisPoolConfig;
  
  /**
   * @author: fjx
   * @date: 2018/11/16 14:55
   * Descripe:
   */
  public final class RedisUtil {
      private static String ADDR = "47.106.74.95";
  
      /**
       * Redis的端口号
       */
      private static int PORT = 6380;
  
      /**
       * 可用连接实例的最大数目，默认值为8；
       *  如果赋值为-1，则表示不限制；如果pool已经分配了maxActive个jedis实例，则此时pool的状态为exhausted(耗尽)。
       */
      private static int MAX_ACTIVE = 1024;
  
  
      /**
       * 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例，默认值也是8。
       */
      private static int MAX_IDLE = 200;
  
  
      /**
       * 等待可用连接的最大时间，单位毫秒，默认值为-1，表示永不超时。如果超过等待时间，则直接抛出JedisConnectionException；
       */
      private static int MAX_WAIT = 10000;
  
      private static int TIMEOUT = 10000;
  
      /**
       * 在borrow一个jedis实例时，是否提前进行validate操作；如果为true，则得到的jedis实例均是可用的；
       */
  
      private static boolean TEST_ON_BORROW = true;
  
      private static JedisPool jedisPool = null;
  
      /**
       * 初始化Redis连接池
       */
      static {
          try {
              JedisPoolConfig config = new JedisPoolConfig();
              config.setMaxIdle(MAX_IDLE);
              config.setMaxWaitMillis(MAX_WAIT);
              config.setMaxTotal(MAX_ACTIVE);
              config.setTestOnBorrow(TEST_ON_BORROW);
              jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT,"***");
  //            jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT);
  
          } 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;
          }
      }
  
  
      public static String getValue(String key){
          Jedis jedis = getJedis();
          if(jedis.get(key)!=null){
              return jedis.get(key);
          }
  
          return null;
      }
  
  
      public static void putValue(String key,String value,int seconds){
          getJedis().set(key, value);
          getJedis().expire(key,seconds);
      }
  
      public static void set(String key,String value){
          getJedis().set(key, value);
      }
  
      public static void dele(String key){
          getJedis().del(key);
      }
  
      public static Boolean hasKey(String key){
          return getJedis().exists(key);
      }
  
      /**
       * 释放jedis资源
       *
       * @param jedis
       */
      public static void returnResource(final Jedis jedis) {
          if (jedis != null) {
              // jedisPool.returnResource(jedis);
              jedis.close();
          }
      }
  }
  