zoukankan      html  css  js  c++  java
  • springboot 手动集成redis

    • 导入maven 依赖
        <dependency>
                  <groupId>redis.clients</groupId>
                  <artifactId>jedis</artifactId>
                  <version>2.7.3</version>
         </dependency>
      

        

    • 自己封装方法
      public class RedisClient {
      
          private JedisPool pool = null;
      
          /**
           * <p>
           * 传入ip和端口号构建redis 连接池
           * </p>
           *
           * @param ip   ip
           * @param prot 端口
           */
          public RedisClient(String ip, int prot) {
              if (pool == null) {
                  JedisPoolConfig config = new JedisPoolConfig();
                  // 控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;
                  // 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
                  // 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。
                  config.setMaxIdle(5);
                  // 表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
                  config.setMaxWaitMillis(1000 * 100);
                  // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
                  config.setTestOnBorrow(false);
                  // pool = new JedisPool(config, "192.168.0.121", 6379, 100000);
                  // 测试环境的redis有密码
                  pool = new JedisPool(config, ip, prot, 5000);
              }
          }
      
      
          public RedisClient(String ip, int prot, String password) {
              if (pool == null) {
                  JedisPoolConfig config = new JedisPoolConfig();
                  // 控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;
                  // 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
                  // 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。
                  config.setMaxIdle(5);
                  // 表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
                  config.setMaxWaitMillis(1000 * 100);
                  // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
                  config.setTestOnBorrow(false);
                  // pool = new JedisPool(config, "192.168.0.121", 6379, 100000);
                  if (StringUtils.isBlank(password)) {
                      password = null;
                  }
                  pool = new JedisPool(config, ip, prot, 5000, password);
              }
          }
      
          /**
           *
           * @param ip 服务器地址
           * @param prot 端口号
           * @param database 选着redis的第几个库, 默认的第0g, redis默认具有16个库,  不建议选着这个方法
           */
          public RedisClient(String ip, int prot, int database) {
              if (pool == null) {
                  JedisPoolConfig config = new JedisPoolConfig();
                  // 控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;
                  // 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
                  // 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。
                  config.setMaxIdle(5);
                  // 表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
                  config.setMaxWaitMillis(1000 * 100);
                  // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
                  config.setTestOnBorrow(false);
                  // pool = new JedisPool(config, "192.168.0.121", 6379, 100000);
                  pool = new JedisPool(config, ip, prot, 5000, null, database);
              }
          }
      
          /**
           * <p>
           * 通过配置对象 ip 端口 构建连接池
           * </p>
           *
           * @param config 配置对象
           * @param ip     ip
           * @param prot   端口
           */
          public RedisClient(JedisPoolConfig config, String ip, int prot) {
              if (pool == null) {
                  pool = new JedisPool(config, ip, prot, 5000);
              }
          }
      
          /**
           * <p>
           * 通过配置对象 ip 端口 超时时间 构建连接池
           * </p>
           *
           * @param config  配置对象
           * @param ip      ip
           * @param prot    端口
           * @param timeout 超时时间
           */
          public RedisClient(JedisPoolConfig config, String ip, int prot, int timeout) {
              if (pool == null) {
                  pool = new JedisPool(config, ip, prot, timeout);
              }
          }
      
          /**
           * <p>
           * 通过连接池对象 构建一个连接池
           * </p>
           *
           * @param pool 连接池对象
           */
          public RedisClient(JedisPool pool) {
              if (this.pool == null) {
                  this.pool = pool;
              }
          }
      
      
          /**
           * <p>
           * 通过key获取储存在redis中的value
           * </p>
           * <p>
           * 并释放连接
           * </p>
           *
           * @param key
           * @return 成功返回value 失败返回null
           */
          public String get(String key) {
              Jedis jedis = null;
              String value = null;
              try {
                  jedis = pool.getResource();
                  value = jedis.get(key);
              } catch (Exception e) {
                  pool.returnBrokenResource(jedis);
                  e.printStackTrace();
              } finally {
                  returnResource(pool, jedis);
              }
              return value;
          }
      
    • 构建redis

          @Bean(name = "redisClient")
          public RedisClient redisClient(){
              RedisClient redisClient = new RedisClient("127.0.0.1",6379,"redispassword");
              return redisClient;
          }
      

        

  • 相关阅读:
    Hadoop 的版本问题
    SSH 端口转发原理
    KM算法
    最大流算法小结
    pku 2195 KM算法求最小权二分匹配
    SAP(最短增广路算法) 最大流模板
    最大流模板
    pku 1459 最大流 SAP
    pku Drainage Ditches 简单最大流 直接套模板 注意可能有重边
    推荐:吴军 谷歌黑板报 《浪潮之颠》
  • 原文地址:https://www.cnblogs.com/haitao-xie/p/6278092.html
Copyright © 2011-2022 走看看