• 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.  
      }
  • 相关阅读:
    Chrome developer tool:本人钟爱的 console、Network 功能简谈
    Node.js:实现知乎(www.zhihu.com)模拟登陆,获取用户关注主题
    简谈 JavaScript、Java 中链式方法调用大致实现原理
    jQuery 源码解析二:jQuery.fn.extend=jQuery.extend 方法探究
    jQuery UI 多选下拉框插件:jquery-ui-multiselect
    为什么 JavaScript 中基本数据类型拥有 toString 之类方法?
    谈谈 JavaScript 中的 this 指向问题
    重写和重载的区别
    JAVA的静态方法,静态变量,静态类。
    重载
  • 原文地址:https://www.cnblogs.com/telwanggs/p/15660692.html
Copyright © 2020-2023  润新知