zoukankan      html  css  js  c++  java
  • springboot 2.x版本Redis设置JedisConnectionFactory.setHostName()过时

    原文转载:https://blog.csdn.net/Soda_lw/article/details/82661705

    一、今天新建一个项目用以前的方式集成redis时,发现JedisConnectionFactory.sethostName等方法提示过时,并且RedisCacheManager的配置构造方法也改变了,显示错误。2.X版本可以使用RedisStandaloneConfiguration、RedisSentinelConfiguration、RedisClusterConfiguration三种方式配置连接信息。
    这里我们以RedisStandaloneConfiguration为例,修改之前的配置。 

    1.  
      @Bean
    2.  
      public JedisConnectionFactory redisConnectionFactory() {
    3.  
      RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
    4.  
      redisStandaloneConfiguration.setHostName(host);
    5.  
      redisStandaloneConfiguration.setPort(port);
    6.  
      return new JedisConnectionFactory(redisStandaloneConfiguration);
    7.  
      }

    同样的RedisCacheManager的配置方式也不能再以RedisTemplate为参数初始化,参考:官方文档
    我们改为: 

    1. @Bean
    2.  
      public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory){
    3.  
      return RedisCacheManager.create(connectionFactory);
    4.  
      }

    二、以上配置使用的是直接连接redis的方式,即每次连接都创建新的连接。当并发量剧增时,这会带来性能上开销,同时由于没有对连接数进行限制,则可能使服务器崩溃导致无法响应。所以我们一般都会建立连接池,事先初始化一组连接,供需要redis连接的线程取用。

    我们定义连接池配置信息:

    1.  
      /**
    2.  
      * 连接池配置信息
    3.  
      */
    4.  
      @Bean
    5.  
      public JedisPoolConfig jedisPoolConfig(){
    6.  
      JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
    7.  
      //最大连接数
    8.  
      jedisPoolConfig.setMaxTotal(100);
    9.  
      //最小空闲连接数
    10.  
      jedisPoolConfig.setMinIdle(20);
    11.  
      //当池内没有可用连接时,最大等待时间
    12.  
      jedisPoolConfig.setMaxWaitMillis(10000);
    13.  
      //其他属性可以自行添加
    14.  
      return jedisPoolConfig;
    15.  
      }

    在配置jedis连接工厂,用下面的替代我们第一步中配置的JedisConnectionFactory

    1.  
      /**
    2.  
      * jedis连接工厂
    3.  
      * @param jedisPoolConfig
    4.  
      * @return
    5.  
      */
    6.  
      @Bean
    7.  
      public RedisConnectionFactory redisConnectionFactory(JedisPoolConfig jedisPoolConfig) {
    8.  
      RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
    9.  
      //设置redis服务器的host或者ip地址
    10.  
      redisStandaloneConfiguration.setHostName(host);
    11.  
      redisStandaloneConfiguration.setPort(port);
    12.  
      //获得默认的连接池构造
    13.  
      //这里需要注意的是,edisConnectionFactoryJ对于Standalone模式的没有(RedisStandaloneConfiguration,JedisPoolConfig)的构造函数,对此
    14.  
      //我们用JedisClientConfiguration接口的builder方法实例化一个构造器,还得类型转换
    15.  
      JedisClientConfiguration.JedisPoolingClientConfigurationBuilder jpcf = (JedisClientConfiguration.JedisPoolingClientConfigurationBuilder) JedisClientConfiguration.builder();
    16.  
      //修改我们的连接池配置
    17.  
      jpcf.poolConfig(jedisPoolConfig);
    18.  
      //通过构造器来构造jedis客户端配置
    19.  
      JedisClientConfiguration jedisClientConfiguration = jpcf.build();
    20.  
       
    21.  
      return new JedisConnectionFactory(redisStandaloneConfiguration, jedisClientConfiguration);
    22.  
      }
  • 相关阅读:
    企业生产经营相关英文及缩写之(9)称号/部门/公司
    企业生产经营相关英文及缩写之(2)生产/货仓
    企业生产经营相关英文及缩写之(6)BOM 通用缩写
    企业生产经营相关英文及缩写之(3)工程/工序(制程)
    企业生产经营相关英文及缩写之(11)Genenic 普通书写
    企业生产经营相关英文及缩写之(5)营业/采购
    企业生产经营相关英文及缩写之(7)Shipping 装运
    企业生产经营相关英文及缩写之(4)质量/体系
    软考总结
    IIS是如何处理ASP.NET请求的
  • 原文地址:https://www.cnblogs.com/telwanggs/p/15660692.html
Copyright © 2011-2022 走看看