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

SpringBoot整合Redisson的兩種方式

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

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

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

前言

redisson和redis區(qū)別:

  1. Redis是一個(gè)開(kāi)源的內(nèi)存數(shù)據(jù)庫(kù),支持多種數(shù)據(jù)類(lèi)型,如字符串、哈希、列表、集合和有序集合等,常用于緩存、消息隊(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ù),使開(kāi)發(fā)者能更集中于處理業(yè)務(wù)邏輯。
  3. Redisson不支持字符串操作、排序、事務(wù)、管道、分區(qū)等Redis特性,但Redisson 提供了許多其他功能,如分布式閉鎖、分布式計(jì)數(shù)器、分布式信號(hào)量等。

前提準(zhǔn)備 

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

maven依賴(lài):

<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ù)庫(kù)編號(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沒(méi)變

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ù)庫(kù)的概念,默認(rèn)只有一個(gè)數(shù)據(jù)庫(kù),即db 0,所以這里是沒(méi)有database這個(gè)參數(shù)的。

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

配置類(lèi)已經(jīng)兼容單節(jié)點(diǎn)和集群模式,參數(shù)名可以自定義,數(shù)據(jù)庫(kù)默認(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://開(kāi)頭。
        #   address: redis://localhost:6379,redis://localhost:6378,...
        # sentinel:
        #   每個(gè)節(jié)點(diǎn)逗號(hào)分隔,同時(shí)每個(gè)節(jié)點(diǎn)前必須以redis://開(kāi)頭。
        #   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://開(kāi)頭。
        #   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配置類(lèi)。
 */
@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ù)庫(kù)默認(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ù)庫(kù)概念,默認(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)文章

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

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

    業(yè)務(wù)需求開(kāi)發(fā)的時(shí)候,我們總是會(huì)遇到拉不到依賴(lài)包的情況,此時(shí)如果不清楚 Maven 拉取依賴(lài)包的原理,那么很可能找不到問(wèn)題所在,今天小編就帶大家了解下 Maven 拉包的原理,讓你在遇到問(wèn)題的時(shí)候能快速解決,需要的朋友可以參考下
    2023-07-07
  • mybatis3.4.6 批量更新 foreach 遍歷map 的正確姿勢(shì)詳解

    mybatis3.4.6 批量更新 foreach 遍歷map 的正確姿勢(shì)詳解

    這篇文章主要介紹了mybatis3.4.6 批量更新 foreach 遍歷map 的正確姿勢(shì)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • 基于SpringBoot和Vue3的博客平臺(tái)文章詳情與評(píng)論功能實(shí)現(xiàn)

    基于SpringBoot和Vue3的博客平臺(tái)文章詳情與評(píng)論功能實(shí)現(xiàn)

    在前面的教程中,我們已經(jīng)實(shí)現(xiàn)了基于Spring Boot和Vue3的發(fā)布、編輯、刪除文章功能以及文章列表與分頁(yè)功能。本教程將引導(dǎo)您實(shí)現(xiàn)博客平臺(tái)的文章詳情與評(píng)論功能,需要的朋友可以參考一下
    2023-04-04
  • Java中常見(jiàn)的5種WEB服務(wù)器介紹

    Java中常見(jiàn)的5種WEB服務(wù)器介紹

    這篇文章主要介紹了Java中常見(jiàn)的5種WEB服務(wù)器介紹,它們分別是Tomcat、Resin、JBoss、WebSphere、WebLogic,需要的朋友可以參考下
    2014-07-07
  • spring boot Logging的配置以及使用詳解

    spring boot Logging的配置以及使用詳解

    這篇文章主要介紹了spring boot Logging的配置以及使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • 淺談java中類(lèi)名.class, class.forName(), getClass()的區(qū)別

    淺談java中類(lèi)名.class, class.forName(), getClass()的區(qū)別

    下面小編就為大家?guī)?lái)一篇淺談java中類(lèi)名.class, class.forName(), getClass()的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • SpringBoot使用hutool操作FTP的詳細(xì)過(guò)程

    SpringBoot使用hutool操作FTP的詳細(xì)過(guò)程

    在使用SpringBoot結(jié)合hutool操作FTP時(shí),遇到防火墻導(dǎo)致上傳文件大小為0kb的問(wèn)題,通過(guò)設(shè)置FTP為被動(dòng)模式解決,本文詳細(xì)解析了FTP的主動(dòng)模式和被動(dòng)模式的工作原理、安全性及適用場(chǎng)景,幫助理解FTP的連接方式和解決網(wǎng)絡(luò)限制問(wèn)題
    2024-09-09
  • Java注解Annotation與自定義注解詳解

    Java注解Annotation與自定義注解詳解

    本文全面講述了Java注解Annotation與Java自定義注解及相關(guān)內(nèi)容,大家可以認(rèn)真看看
    2018-03-03
  • JAVA之String中刪除指定字符方式(11種方法)

    JAVA之String中刪除指定字符方式(11種方法)

    這篇文章主要介紹了JAVA之String中刪除指定字符方式(11種方法),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • java基于AspectJ(面向切面編程)編碼示例分享

    java基于AspectJ(面向切面編程)編碼示例分享

    AspectJ是一種面向切面程序設(shè)計(jì)的基于Java的實(shí)現(xiàn),下面對(duì)過(guò)示例學(xué)習(xí)他的使用方法,需要的朋友可以參考下
    2014-02-02

最新評(píng)論