首頁 > 軟體

springboot 整合redis哨兵主從的實現

2022-07-11 18:00:51

一、環境

spring boot 2.3.12.RELEASE
JDK 1.8
IntelliJ IDEA開發工具
Redis哨兵主從搭建

二、POM檔案

pom檔案其他忽略,只展示和redis有關係統的依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 重點:redis依賴 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 物件池框架,redis依賴 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
</dependency>

三、application.yml設定

關於springboot的設定忽略
spring 約定大於設定,對於預設的就可以不用再組態檔中體現

spring:
  redis:
    # redis庫
    database: 1
    # redis節點的密碼
    password: jwssw
    # 叢集設定
    sentinel:
      # 叢集哨兵節點設定,多個節點之間用英文逗號分割
      nodes: 127.0.0.1:26379,127.0.0.1:26380,127.0.0.1:26381
      # 主節點名稱
      master: mymaster
      # 密碼
      password: jwssw

注意如果redis的sentinel組態檔增加了requirepass(存取祕鑰),其sentinel節點下必須加上【password】,否則不需要新增。

四、reidsTemplate設定

該組態檔可以直接載入啟動類中,因為啟動類也是springboot的一種設定類

/**
 * 方法描述: 初始化redis連線
 *
 * @param factory redis連線工廠
 * @return {@link RedisTemplate}
 */
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
    // 新建redisTemplate物件
    RedisTemplate<String, Object> template = new RedisTemplate<>();
    // 設定工廠
    template.setConnectionFactory(factory);
    // 鍵值型別
    template.setKeySerializer(new StringRedisSerializer());
    template.setValueSerializer(new StringRedisSerializer());
    // 返回redisTemplate物件
    return template;
}

五、單元測試(JUnit4)

@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisTest {
    // 注入redisTemplate物件
    @Autowired
    RedisTemplate<String, Object> redisTemplate;

    @Test
    public void setOrGetTest() {
        // redis鍵值 
        String redisKey = "name";
        // 向redis存放內容
        redisTemplate.opsForValue().set(redisKey, "張三" + new Random().nextInt());
        // 獲取redis中的內容並列印
        System.out.println(redisTemplate.opsForValue().get(redisKey));
    }
}

到此這篇關於springboot 整合redis哨兵主從的實現的文章就介紹到這了,更多相關springboot redis哨兵主從內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com