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.  
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM