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

springboot集成redis哨兵集群的實現(xiàn)示例

 更新時間:2023年08月06日 11:16:39   作者:渣渣→_→  
本文主要介紹了springboot集成redis哨兵集群的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

redis主從集群和redis sentinel集群都配置完畢了, 現(xiàn)在我們需要了解spring boot 如何連接上該集群

才能用上這兩個集群帶來的便利

本章內(nèi)容

  • 為什么需要關(guān)注這個問題?
  • 怎么配置?

記住. 本章是針對redis已經(jīng)配置了主從集群和哨兵集群的, 而非cluster集群模式

為什么需要關(guān)注這個問題?

沒有 Redis Sentinel 架構(gòu)之前,如果主節(jié)點掛了,需要運維人員手動進(jìn)行主從切換,然后更新所有用到的 Redis IP 地址參數(shù)再重新啟動系統(tǒng),所有恢復(fù)操作都需要人為干預(yù),如果半夜掛了,如果系統(tǒng)很多,如果某個操作搞錯了,等等,這對運維人員來說簡直就是惡夢。

有了 Redis Sentinel,主從節(jié)點故障都是自動化切換,應(yīng)用程序參數(shù)什么也不用改,對于客戶端來說都是透明無縫切換的,運維人員再也不用擔(dān)驚受怕了。

怎么配置?

看看源碼分析分析

我們需要注意redis中springboot的這個接口

也就是RedisConnectionFactory這個接口

可以看到三個函數(shù), 分別拿到

  • redis集群的Connection
  • 單機redis的Connection
  • 哨兵方式的Connection

如果你寫過springboot整合redis的hello world 項目的話, 你會發(fā)現(xiàn), springboot默認(rèn)使用

LettuceConnectionFactory

同時我們通過在 application.yml 上的 spring.redis 字符串找到

org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration

可以看到下面的這個Bean配置

優(yōu)先級已經(jīng)決定了, sentinel > cluster > 單機 方式

進(jìn)入getSentinelConfig函數(shù)

protected final RedisSentinelConfiguration getSentinelConfig() {
   if (this.sentinelConfiguration != null) {
      return this.sentinelConfiguration;
   }
   RedisProperties.Sentinel sentinelProperties = this.properties.getSentinel();
   if (sentinelProperties != null) {
      RedisSentinelConfiguration config = new RedisSentinelConfiguration();
      config.master(sentinelProperties.getMaster());
      config.setSentinels(createSentinels(sentinelProperties));
      config.setUsername(this.properties.getUsername());
      if (this.properties.getPassword() != null) {
         config.setPassword(RedisPassword.of(this.properties.getPassword()));
      }
      config.setSentinelUsername(sentinelProperties.getUsername());
      if (sentinelProperties.getPassword() != null) {
         config.setSentinelPassword(RedisPassword.of(sentinelProperties.getPassword()));
      }
      config.setDatabase(this.properties.getDatabase());
      return config;
   }
   return null;
}

上面可以看到 password 和 sentinelPassword 是可選的

跳到RedisProperties.Sentinel 就看到

配置

sentinel:
  master: mymaster
  password: 123456
  nodes:
    - 192.168.7.5:26379
    - 192.168.7.6:26380
    - 192.168.7.7:26381

完整application.yml

server:
  port: 8081
spring:
  application:
    name: redis-data-demo
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/hmdp?useSSL=false&serverTimezone=UTC
    username: root
    password: 123456
  redis:
    host: 127.0.0.1
    port: 6379
    lettuce:
      pool:
        max-active: 10
        max-idle: 10
        min-idle: 1
        time-between-eviction-runs: 10s
        enabled: true
    sentinel:
      master: mymaster
      password: 123456
      nodes:
        - 192.168.7.5:26379
        - 192.168.7.6:26380
        - 192.168.7.7:26381
  jackson:
    default-property-inclusion: non_null
    date-format: yyyy-MM-dd HH:mm:ss
    serialization:
      WRITE_DATES_AS_TIMESTAMPS: false
    deserialization:
      READ_DATE_TIMESTAMPS_AS_NANOSECONDS: false
  #  cache:
  #    type: redis
  #    redis:
  #      time-to-live: 1800 # 全局 key 過期時間
  #      cache-null-values: true
  main:
    allow-circular-references: true
  rabbitmq:
    host: 127.0.0.1
    username: zhazha
    password: 123456
    virtual-host: /
    listener:
      simple:
        acknowledge-mode: manual
        retry:
          enabled: true
          initial-interval: 300
          max-attempts: 3
          max-interval: 1000
    publisher-returns: true
    publisher-confirm-type: correlated
mybatis-plus:
  type-aliases-package: com.zhazha.entity
  global-config:
    banner: off
logging:
  level:
    com.zhazha: debug

在項目的啟動類中,添加一個新的bean:

@Bean
public LettuceClientConfigurationBuilderCustomizer clientConfigurationBuilderCustomizer(){
    return clientConfigurationBuilder -> clientConfigurationBuilder.readFrom(ReadFrom.REPLICA_PREFERRED);
}

這個bean中配置的就是讀寫策略,包括四種:

  • MASTER:從主節(jié)點讀取
  • MASTER_PREFERRED:優(yōu)先從master節(jié)點讀取,master不可用才讀取replica
  • REPLICA:從slave(replica)節(jié)點讀取
  • REPLICA_PREFERRED:優(yōu)先從slave(replica)節(jié)點讀取,所有的slave都不可用才讀取master

其他操作不需要修改

到此這篇關(guān)于springboot集成redis哨兵集群的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)springboot redis哨兵集群內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring教程之異常捕獲方式

    Spring教程之異常捕獲方式

    這篇文章主要介紹了Spring異常捕獲方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • Java垃圾回收之復(fù)制算法詳解

    Java垃圾回收之復(fù)制算法詳解

    今天小編就為大家分享一篇關(guān)于Java垃圾回收之復(fù)制算法詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • java中int初始化可以為0,但不能為NULL問題

    java中int初始化可以為0,但不能為NULL問題

    這篇文章主要介紹了java中int初始化可以為0,但不能為NULL問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 在JDK和Eclipse下如何編寫和運行Java Applet

    在JDK和Eclipse下如何編寫和運行Java Applet

    本文主要介紹了在JDK和Eclipse的環(huán)境下如何編寫和運行Java Applet,圖文方式,適合初學(xué)者學(xué)習(xí)。
    2015-09-09
  • SpringBoot中@ControllerAdvice注解的使用方法

    SpringBoot中@ControllerAdvice注解的使用方法

    這篇文章主要介紹了SpringBoot中@ControllerAdvice注解的使用方法,這是一個增強的?Controller,對controller層做異常處理、數(shù)據(jù)預(yù)處理、全局?jǐn)?shù)據(jù)綁定,?springboot?會自動掃描到,不需要調(diào)用,這個注解是spring?MVC提供的,在springboot中也可以使用,需要的朋友可以參考下
    2024-01-01
  • Java中高效判斷數(shù)組中是否包含某個元素的幾種方法

    Java中高效判斷數(shù)組中是否包含某個元素的幾種方法

    這是一個在Java中經(jīng)常用到的并且非常有用的操作,這個問題在Stack Overflow中也是一個非常熱門的問題,本文將分析幾種常見用法及其時間成本
    2021-09-09
  • java自帶排序使用

    java自帶排序使用

    這篇文章主要給大家分享了java自帶排序使用,該方法是升序排序,方法的內(nèi)部采用了快排實現(xiàn),但該方法是?穩(wěn)定的。下面一起來看看文章的詳細(xì)介紹吧
    2021-12-12
  • Java 將文件轉(zhuǎn)為字節(jié)數(shù)組知識總結(jié)及實例詳解

    Java 將文件轉(zhuǎn)為字節(jié)數(shù)組知識總結(jié)及實例詳解

    這篇文章主要介紹了Java 將文件轉(zhuǎn)為字節(jié)數(shù)組實例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Java單線程ThreadLocal串值問題解決方案

    Java單線程ThreadLocal串值問題解決方案

    這篇文章主要介紹了Java單線程ThreadLocal串值問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Spring?Security權(quán)限管理實現(xiàn)接口動態(tài)權(quán)限控制

    Spring?Security權(quán)限管理實現(xiàn)接口動態(tài)權(quán)限控制

    這篇文章主要為大家介紹了Spring?Security權(quán)限管理實現(xiàn)接口動態(tài)權(quán)限控制,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06

最新評論

祁门县| 长阳| 顺平县| 同仁县| 双鸭山市| 高要市| 全椒县| 罗平县| 南京市| 巨鹿县| 青浦区| 光泽县| 潮州市| 襄城县| 文水县| 轮台县| 聂拉木县| 吉首市| 胶南市| 泰来县| 久治县| 桃源县| 霍林郭勒市| 老河口市| 镇赉县| 阳春市| 和顺县| 神农架林区| 哈尔滨市| 怀来县| 浦城县| 大悟县| 玉屏| 富锦市| 淳安县| 贵溪市| 龙川县| 龙门县| 安福县| 宜阳县| 白水县|