最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot整合Redisson的兩種方式

 更新時(shí)間:2024年04月25日 10:57:11   作者:濤哥是個(gè)大帥比  
這篇文章主要介紹了Spring Boot整合Redisson的兩種方式,方式一直接使用yml配置,方式二創(chuàng)建RedissonConfig配置類,文中通過代碼示例講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下

項(xiàng)目場(chǎng)景

Spring Boot整合Redisson的兩種方式,方式一直接使用yml配置,方式二創(chuàng)建RedissonConfig配置類。

前言

redisson和redis區(qū)別:

  1. Redis是一個(gè)開源的內(nèi)存數(shù)據(jù)庫,支持多種數(shù)據(jù)類型,如字符串、哈希、列表、集合和有序集合等,常用于緩存、消息隊(duì)列、計(jì)數(shù)器、分布式鎖和搜索等應(yīng)用場(chǎng)景。
  2. Redisson則是一個(gè)基于Redis實(shí)現(xiàn)的Java駐內(nèi)存數(shù)據(jù)網(wǎng)格,提供了一系列分布式的Java常用對(duì)象和多種鎖機(jī)制,以及分布式服務(wù),使開發(fā)者能更集中于處理業(yè)務(wù)邏輯。
  3. Redisson不支持字符串操作、排序、事務(wù)、管道、分區(qū)等Redis特性,但Redisson 提供了許多其他功能,如分布式閉鎖、分布式計(jì)數(shù)器、分布式信號(hào)量等。

前提準(zhǔn)備 

版本:spring boot2.3.1.RELEASE,redisson3.21.1

maven依賴:

<dependency>
	<groupId>org.redisson</groupId>
	<artifactId>redisson-spring-boot-starter</artifactId>
	<version>3.21.1</version>
</dependency>

集成方案:

方式一:使用yml配置

1.單節(jié)點(diǎn)配置

單節(jié)點(diǎn)配置可以兼容redis的配置方式

application.yml

# redis配置
spring:
  redis:
    database: 0
    host: 127.0.0.1
    password: redis@pass
    port: 6001

或者使用 redisson.yml文件的方式

application.yml這里引用了redisson.yml文件

spring:
  redis:
    # redisson配置
    redisson:
        file: classpath:redisson.yml

redisson.yml

# 單節(jié)點(diǎn)配置
singleServerConfig:
  # 數(shù)據(jù)庫編號(hào)
  database: 0
  # 節(jié)點(diǎn)地址
  address: redis://127.0.0.1:6001
  # 密碼
  password: redis@pass

application.yml與 redisson.yml在同級(jí),目錄結(jié)構(gòu)如下:

2.集群模式配置 

集群模式不能兼容redis之前的配置方式

application.yml沒變

spring:
  redis:
    # redisson配置
    redisson:
        file: classpath:redisson.yml

更改redisson.yml內(nèi)容

# 集群模式
clusterServersConfig:
  # 集群節(jié)點(diǎn)地址
  nodeAddresses:
    - "redis://127.0.0.1:18001"
    - "redis://127.0.0.1:18002"
    - "redis://127.0.0.1:18003"
    - "redis://127.0.0.1:18004"
    - "redis://127.0.0.1:18005"
    - "redis://127.0.0.1:18006"
  # 密碼
  password: redis@pass

Redis集群不支持多個(gè)數(shù)據(jù)庫的概念,默認(rèn)只有一個(gè)數(shù)據(jù)庫,即db 0,所以這里是沒有database這個(gè)參數(shù)的。

方式二:創(chuàng)建RedissonConfig配置類

配置類已經(jīng)兼容單節(jié)點(diǎn)和集群模式,參數(shù)名可以自定義,數(shù)據(jù)庫默認(rèn)使用db 0。

application.yml

spring:
  redis:
    # redisson配置
    redisson:
        # 如果該值為false,系統(tǒng)將不會(huì)創(chuàng)建RedissionClient的bean。
        enabled: true
        # mode的可用值為,single/cluster/sentinel/master-slave
        mode: single
        # single: 單機(jī)模式
        #   address: redis://localhost:6379
        # cluster: 集群模式
        #   每個(gè)節(jié)點(diǎn)逗號(hào)分隔,同時(shí)每個(gè)節(jié)點(diǎn)前必須以redis://開頭。
        #   address: redis://localhost:6379,redis://localhost:6378,...
        # sentinel:
        #   每個(gè)節(jié)點(diǎn)逗號(hào)分隔,同時(shí)每個(gè)節(jié)點(diǎn)前必須以redis://開頭。
        #   address: redis://localhost:6379,redis://localhost:6378,...
        # master-slave:
        #   每個(gè)節(jié)點(diǎn)逗號(hào)分隔,第一個(gè)為主節(jié)點(diǎn),其余為從節(jié)點(diǎn)。同時(shí)每個(gè)節(jié)點(diǎn)前必須以redis://開頭。
        #   address: redis://localhost:6379,redis://localhost:6378,...
        address: redis://127.0.0.1:6001
        # redis 密碼,空可以不填。
        password: redis@pass
        database: 0

RedissonConfig

import org.apache.commons.lang3.StringUtils;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
/**
 * Redisson配置類。
 */
@Configuration
@ConditionalOnProperty(name = "spring.redis.redisson.enabled", havingValue = "true")
public class RedissonConfig {
 
    @Value("${spring.redis.redisson.mode}")
    private String mode;
 
    /**
     * 僅僅用于sentinel模式。
     */
    @Value("${spring.redis.redisson.masterName:}")
    private String masterName;
 
    @Value("${spring.redis.redisson.address}")
    private String address;
 
    @Value("${spring.redis.redisson.password:}")
    private String password;
 
    /**
     * 數(shù)據(jù)庫默認(rèn)0
     */
    @Value("${spring.redis.redisson.database:0}")
    private Integer database;
 
    @Bean
    public RedissonClient redissonClient() {
        if (StringUtils.isBlank(password)) {
            password = null;
        }
        Config config = new Config();
        if ("single".equals(mode)) {
            config.useSingleServer()
                    .setDatabase(database)
                    .setPassword(password)
                    .setAddress(address);
        } else if ("cluster".equals(mode)) {
            String[] clusterAddresses = address.split(",");
            config.useClusterServers()
                    //集群模式不支持多個(gè)數(shù)據(jù)庫概念,默認(rèn)db 0
                    .setPassword(password)
                    .addNodeAddress(clusterAddresses);
        } else if ("sentinel".equals(mode)) {
            String[] sentinelAddresses = address.split(",");
            config.useSentinelServers()
                    .setDatabase(database)
                    .setPassword(password)
                    .setMasterName(masterName)
                    .addSentinelAddress(sentinelAddresses);
        } else if ("master-slave".equals(mode)) {
            String[] masterSlaveAddresses = address.split(",");
            if (masterSlaveAddresses.length == 1) {
                throw new IllegalArgumentException(
                        "redis.redisson.address MUST have multiple redis addresses for master-slave mode.");
            }
            String[] slaveAddresses = new String[masterSlaveAddresses.length - 1];
            System.arraycopy(masterSlaveAddresses, 1, slaveAddresses, 0, slaveAddresses.length);
            config.useMasterSlaveServers()
                    .setDatabase(database)
                    .setPassword(password)
                    .setMasterAddress(masterSlaveAddresses[0])
                    .addSlaveAddress(slaveAddresses);
        } else {
            throw new IllegalArgumentException(mode);
        }
        return Redisson.create(config);
    }
}

以上就是SpringBoot整合Redisson的兩種方式的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot整合Redisson的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java中文分詞之正向最大匹配法實(shí)例代碼

    java中文分詞之正向最大匹配法實(shí)例代碼

    中文分詞應(yīng)用很廣泛,網(wǎng)上也有很多開源項(xiàng)目,下面這篇文章主要給大家介紹了關(guān)于java中文分詞之正向最大匹配法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • java中的序列化解析

    java中的序列化解析

    這篇文章主要介紹了java中的序列化解析,為了將對(duì)象進(jìn)行網(wǎng)絡(luò)傳輸或者是持久化,我們需要將對(duì)象的狀態(tài)信息轉(zhuǎn)換為可以存儲(chǔ)或者傳輸?shù)男问?這個(gè)轉(zhuǎn)換的過程就叫序列化,需要的朋友可以參考下
    2023-09-09
  • Java通過Process類Runtime.getRuntime().exec()執(zhí)行bat腳本程序

    Java通過Process類Runtime.getRuntime().exec()執(zhí)行bat腳本程序

    用Java編寫應(yīng)用時(shí),有時(shí)需要在程序中調(diào)用另一個(gè)現(xiàn)成的可執(zhí)行程序或系統(tǒng)命令,這篇文章主要給大家介紹了關(guān)于Java如何通過Process類Runtime.getRuntime().exec()執(zhí)行bat腳本程序的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • IDE 搭配 Lombok 注解的配置方法

    IDE 搭配 Lombok 注解的配置方法

    Lombok是一個(gè)Java庫,通過注解簡(jiǎn)化代碼編寫,減少樣板代碼,在使用IDE如IntelliJ IDEA或Eclipse結(jié)合Lombok時(shí),需要先添加Lombok依賴,然后在IDE中配置,以啟用注解處理器,配置完成后,使用Lombok注解來簡(jiǎn)化Java類的編寫,本文介紹IDE搭配Lombok注解的配置,感興趣的朋友一起看看吧
    2025-03-03
  • java實(shí)現(xiàn)插入排序算法

    java實(shí)現(xiàn)插入排序算法

    插入排序算法是一個(gè)對(duì)少量元素進(jìn)行排序的有效算法。插入排序的工作原理與打牌時(shí)整理手中的牌的做法類似,開始摸牌時(shí),我們的左手是空的,接著一次從桌上摸起一張牌,并將它插入到左手的正確位置。
    2015-04-04
  • java 字節(jié)流和字符流的區(qū)別詳解

    java 字節(jié)流和字符流的區(qū)別詳解

    這篇文章主要介紹了java 字節(jié)流和字符流的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 使用Spring自定義命名空間

    使用Spring自定義命名空間

    這篇文章主要介紹了使用Spring自定義命名空間方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • MyBatis?Xml映射文件之字符串替換方式

    MyBatis?Xml映射文件之字符串替換方式

    這篇文章主要介紹了MyBatis?Xml映射文件之字符串替換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Intellij IDEA神器居然還有這些小技巧

    Intellij IDEA神器居然還有這些小技巧

    Intellij IDEA真是越用越覺得它強(qiáng)大,它總是在我們寫代碼的時(shí)候,不時(shí)給我們來個(gè)小驚喜,本文給大家主要介紹一些你可能不知道的但是又實(shí)用的小技巧,感興趣的朋友跟隨小編一起看看吧
    2021-01-01
  • Nacos集群數(shù)據(jù)同步方式

    Nacos集群數(shù)據(jù)同步方式

    文章主要介紹了Nacos集群中服務(wù)注冊(cè)信息的同步機(jī)制,涉及到負(fù)責(zé)節(jié)點(diǎn)和非負(fù)責(zé)節(jié)點(diǎn)之間的數(shù)據(jù)同步過程,以及DistroProtocol協(xié)議在同步中的應(yīng)用
    2024-12-12

最新評(píng)論

五原县| 吴忠市| 运城市| 上栗县| 大余县| 蒙自县| 射洪县| 湘阴县| 蓬莱市| 佳木斯市| 濮阳县| 元谋县| 望谟县| 洞口县| 于都县| 融水| 高要市| 广元市| 平邑县| 库车县| 茂名市| 芜湖县| 玛沁县| 皮山县| 南漳县| 察哈| 常宁市| 繁昌县| 昭通市| 高邮市| 秀山| 湟中县| 朔州市| 应城市| 旬阳县| 宜丰县| 广州市| 雅安市| 黔西县| 临潭县| 井冈山市|