欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Boot不同版本Redis設(shè)置JedisConnectionFactory詳解

 更新時(shí)間:2023年09月25日 10:39:03   作者:manongjc  
本文章向大家介紹Spring Boot不同版本Redis設(shè)置JedisConnectionFactory,主要內(nèi)容包括1.X 版本、2.X 版本、2.、基本概念、基礎(chǔ)應(yīng)用、原理機(jī)制和需要注意的事項(xiàng)等,并結(jié)合實(shí)例形式分析了其使用技巧,希望通過(guò)本文能幫助到大家理解應(yīng)用這部分內(nèi)容

Spring Boot不同版本Redis設(shè)置JedisConnectionFactory的方式

最近重構(gòu)項(xiàng)目想引入Redis,之前1.0版本看項(xiàng)目里用的本地緩存Guava,這次重構(gòu)后考慮要不要加入Redis。打算試試~

因?yàn)槲乙郧白龅捻?xiàng)目用的Spring Boot版本比較低。還是老的 1.5.X版本的。 之前設(shè)置 JedisConnectionFactory 的方式與現(xiàn)在 2.X 版本有點(diǎn)不一樣,所以記錄一下,方便以后查看。

1.X 版本

設(shè)置 JedisConnectionFactory 方法:

    @Bean
    public JedisConnectionFactory jedisConnectionFactory(JedisPoolConfig jedisPoolConfig){
        String[] hostAndPorts = env.getProperty("spring.redis.cluster.nodes").split(",");
        JedisConnectionFactory jedisConnectionFactory = null;
        if(hostAndPorts.length==1){
            //單機(jī)版
            String host = hostAndPorts[0].split(":")[0];
            int port = Integer.valueOf(hostAndPorts[0].split(":")[1]);
            String password = env.getProperty("spring.redis.password");
            jedisConnectionFactory = new JedisConnectionFactory();
            jedisConnectionFactory.setPoolConfig(jedisPoolConfig);
            jedisConnectionFactory.setDatabase(1);
            jedisConnectionFactory.setHostName(host);
            jedisConnectionFactory.setPassword(password);
            jedisConnectionFactory.setPort(port);
            jedisConnectionFactory.setTimeout(5000);
            jedisConnectionFactory.afterPropertiesSet();
        }else{
            //集群版
            RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration();
            String password = env.getProperty("spring.redis.password");
            Set<RedisNode> nodes = new HashSet<RedisNode>();
            for (String ipPort:hostAndPorts){
                String[] ipAndPort = ipPort.split(":");
                nodes.add(new RedisNode(ipAndPort[0].trim(),Integer.valueOf(ipAndPort[1])));
            }
            redisClusterConfiguration.setClusterNodes(nodes);
            redisClusterConfiguration.setMaxRedirects(200);
            jedisConnectionFactory = new JedisConnectionFactory(redisClusterConfiguration,jedisPoolConfig);
            jedisConnectionFactory.setPassword(password);
            jedisConnectionFactory.afterPropertiesSet();
        }
        return jedisConnectionFactory;
    }

在 2.X 版本使用的話會(huì)提示方法已過(guò)期,推薦使用下面的方法。

2.X 版本

2.X 版本可以使用 RedisStandaloneConfiguration 來(lái)配置連接信息。

    @Bean
    public JedisConnectionFactory redisConnectionFactory() {
        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
        redisStandaloneConfiguration.setHostName(env.getProperty("spring.redis.host"));
        redisStandaloneConfiguration.setPort(Integer.parseInt(env.getProperty("spring.redis.port")));
        redisStandaloneConfiguration.setPassword(env.getProperty("spring.redis.password"));
        redisStandaloneConfiguration.setDatabase(Integer.parseInt(env.getProperty("spring.redis.database")));
        return new JedisConnectionFactory(redisStandaloneConfiguration);
    }

以上配置使用的是直接連接 Redis 的方式,即每次連接都創(chuàng)建新的連接。當(dāng)并發(fā)量劇增時(shí),這會(huì)帶來(lái)性能上開(kāi)銷,同時(shí)由于沒(méi)有對(duì)連接數(shù)進(jìn)行限制,則可能使服務(wù)器崩潰導(dǎo)致無(wú)法響應(yīng)。

所以一般情況下都會(huì)建立連接池,事先初始化一組連接,供需要 Redis 連接的線程取用。

    @Bean
    public JedisConnectionFactory redisConnectionFactory() {
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxTotal(200);
        jedisPoolConfig.setMaxIdle(150);
        jedisPoolConfig.setMinIdle(50);
        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
        redisStandaloneConfiguration.setHostName(env.getProperty("spring.redis.host"));
        redisStandaloneConfiguration.setPort(Integer.parseInt(env.getProperty("spring.redis.port")));
        redisStandaloneConfiguration.setPassword(env.getProperty("spring.redis.password"));
        redisStandaloneConfiguration.setDatabase(Integer.parseInt(env.getProperty("spring.redis.database")));
        JedisClientConfiguration.JedisClientConfigurationBuilder configurationBuilder = JedisClientConfiguration.builder();
        JedisClientConfiguration jedisClientConfiguration = configurationBuilder.usePooling().poolConfig(jedisPoolConfig).build();
        return new JedisConnectionFactory(redisStandaloneConfiguration, jedisClientConfiguration);
    }

以上就是Spring Boot不同版本Redis設(shè)置JedisConnectionFactory詳解的詳細(xì)內(nèi)容,更多關(guān)于Spring Boot Redis設(shè)置JedisConnectionFactory的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解Java?ReentrantLock可重入,可打斷,鎖超時(shí)的實(shí)現(xiàn)原理

    詳解Java?ReentrantLock可重入,可打斷,鎖超時(shí)的實(shí)現(xiàn)原理

    前面講解了ReentrantLock加鎖和解鎖的原理實(shí)現(xiàn),但是沒(méi)有闡述它的可重入、可打斷以及超時(shí)獲取鎖失敗的原理,本文就重點(diǎn)講解這三種情況,需要的可以了解一下
    2022-10-10
  • idea.vmoptions 最佳配置方案

    idea.vmoptions 最佳配置方案

    本文介紹了針對(duì)IntelliJ IDEA的優(yōu)化配置建議,包括提升內(nèi)存設(shè)置、啟用G1垃圾回收器、優(yōu)化垃圾回收策略以及調(diào)整網(wǎng)絡(luò)設(shè)置等,旨在提高IDE的性能和響應(yīng)速度,同時(shí),指導(dǎo)用戶如何修改vmoptions文件以應(yīng)用這些配置,并提供了監(jiān)控內(nèi)存使用和插件管理的建議
    2024-09-09
  • 一文帶你弄懂Maven拉包(拉取依賴包)原理

    一文帶你弄懂Maven拉包(拉取依賴包)原理

    業(yè)務(wù)需求開(kāi)發(fā)的時(shí)候,我們總是會(huì)遇到拉不到依賴包的情況,此時(shí)如果不清楚 Maven 拉取依賴包的原理,那么很可能找不到問(wèn)題所在,今天小編就帶大家了解下 Maven 拉包的原理,讓你在遇到問(wèn)題的時(shí)候能快速解決,需要的朋友可以參考下
    2023-07-07
  • Java ThreadPool的使用解析

    Java ThreadPool的使用解析

    這篇文章主要介紹了Java ThreadPool的使用解析,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-10-10
  • JavaEE實(shí)現(xiàn)文件下載

    JavaEE實(shí)現(xiàn)文件下載

    這篇文章主要介紹了JavaEE實(shí)現(xiàn)文件下載的方法,非常的實(shí)用,需要的朋友可以參考下
    2014-10-10
  • Spring框架生成圖片驗(yàn)證碼實(shí)例

    Spring框架生成圖片驗(yàn)證碼實(shí)例

    驗(yàn)證碼在很多地方都會(huì)遇到,實(shí)現(xiàn)的方法和形式也有很多,主要的目的就是為了安全,防止一些惡意的攻擊等。今天在之前搭建好的一個(gè)spring框架上寫了一個(gè)驗(yàn)證碼的生成demo,我會(huì)貼出細(xì)節(jié)代碼,但是spring的配置就不在介紹了,有需要的可以參考借鑒。
    2016-08-08
  • 使用Vert.x Maven插件快速創(chuàng)建項(xiàng)目的方法

    使用Vert.x Maven插件快速創(chuàng)建項(xiàng)目的方法

    這篇文章主要介紹了使用Vert.x Maven插件快速創(chuàng)建項(xiàng)目的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • Java Swagger使用教程

    Java Swagger使用教程

    Swagger是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 Restful 風(fēng)格的 Web 服務(wù)??傮w目標(biāo)是使客戶端和文件系統(tǒng)作為服務(wù)器以同樣的速度來(lái)更新。文件的方法、參數(shù)和模型緊密集成到服務(wù)器端的代碼,允許API來(lái)始終保持同步
    2022-07-07
  • 淺談Java中格式化輸出

    淺談Java中格式化輸出

    這篇文章主要介紹了Java中格式化輸出,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 在JAVA?Web項(xiàng)目中動(dòng)態(tài)加載DLL/SO文件的方法

    在JAVA?Web項(xiàng)目中動(dòng)態(tài)加載DLL/SO文件的方法

    在JAVA?Web項(xiàng)目中,我們經(jīng)常需要調(diào)用一些第三方庫(kù)或者實(shí)現(xiàn)一些JAVA本身不支持的功能,這時(shí),我們可能會(huì)考慮使用JNI來(lái)調(diào)用DLL或SO文件,然而,因此,本文將介紹如何在JAVA?Web項(xiàng)目中動(dòng)態(tài)加載DLL/SO文件,需要的朋友可以參考下
    2024-12-12

最新評(píng)論