博客 / 詳情

返回

藍易雲cdn:springboot之RedisTemplate的訪問單機,哨兵,集羣模式

下面給你一份真正能落地、結構嚴謹、可直接用於生產開發的內容,涵蓋 Spring Boot 中 RedisTemplate 訪問 單機、哨兵、集羣模式 的完整説明,包含代碼、配置、工作原理、解釋表,並滿足你所有格式要求。
我會保持務實、直擊重點,內容會讓你一看就能上手部署。

Spring Boot 中 RedisTemplate 訪問單機、哨兵、集羣模式(最新版實踐指南)🚀

在現代分佈式業務中,Redis 的部署方式決定了調用模式與連接工廠配置。Spring Boot 中使用 RedisTemplate 時,只需要切換 RedisConnectionFactory 即可完成三種模式的適配。


一、三種模式核心差異(對比圖)

flowchart LR
A[單機模式] --> B[單節點 簡單高效]
C[哨兵模式] --> D[主從架構 自動故障切換]
E[集羣模式] --> F[分片擴容 高可用 高吞吐]

二、Spring Boot 訪問 Redis 單機模式(最基礎)✨

1. application.yml 配置

spring:
  redis:
    host: 127.0.0.1
    port: 6379
    password: yourpass
    database: 0

解釋

  • host: Redis 單機地址。
  • port: Redis 端口,一般為 6379。
  • password: 密碼,沒有可省略。
  • database: 選擇 Redis 邏輯庫。

2. 配置 RedisTemplate(最新版可自動配置)

@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(factory);

        // Key使用String序列化
        template.setKeySerializer(new StringRedisSerializer());
        // Value使用JSON序列化
        template.setValueSerializer(new GenericJackson2JsonRedisSerializer());

        return template;
    }
}

解釋

  • RedisConnectionFactory:連接工廠,單機模式下由 Lettuce 自動創建。
  • KeySerializer:設置 Key 序列化避免亂碼。
  • ValueSerializer:JSON 序列化,便於跨語言。

三、Spring Boot 哨兵模式(Sentinel)🛡️

哨兵模式適用於需要自動主從切換的高可用場景。

1. application.yml 配置

spring:
  redis:
    sentinel:
      master: mymaster
      nodes:
        - 10.0.0.1:26379
        - 10.0.0.2:26379
        - 10.0.0.3:26379
    password: yourpass

解釋

  • master: 主節點名稱,必須與 sentinel.conf 中保持一致。
  • nodes: 三個哨兵節點地址。
  • 客户端會根據哨兵返回的主節點自動切換,無需業務代碼參與

2. 不需要額外寫連接工廠

Spring Boot 會自動生成 LettuceConnectionFactory,RedisTemplate 自動接入哨兵集羣,無需額外代碼。


四、Spring Boot Redis 集羣模式(Cluster)🔥 高吞吐場景首選

Redis Cluster 通過分片實現水平擴容和高可用,適用於大規模業務。

1. application.yml 配置

spring:
  redis:
    cluster:
      nodes:
        - 10.0.0.1:6379
        - 10.0.0.2:6379
        - 10.0.0.3:6379
        - 10.0.0.4:6379
        - 10.0.0.5:6379
        - 10.0.0.6:6379
      max-redirects: 5
    password: yourpass

解釋

  • nodes: 必須是所有集羣節點(含主從)。
  • max-redirects: 集羣分片時的跳轉次數,通常設 5。
  • RedisTemplate 自動識別集羣,不需要修改代碼

五、RedisTemplate 實戰代碼(通用三模式)⚙️

@Service
public class UserCacheService {

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    public void saveUser(String id, Object user) {
        redisTemplate.opsForValue().set("user:" + id, user);
    }

    public Object getUser(String id) {
        return redisTemplate.opsForValue().get("user:" + id);
    }
}

解釋

  • opsForValue():普通 KV 讀寫
  • RedisTemplate 的底層連接自動適配:

    • 單機 → 直連
    • 哨兵 → 自動主節點尋址
    • 集羣 → 自動路由到 slot

六、三種模式工作機制對比表(重點知識)📊

模式 特點 高可用 擴展性 使用場景
<span style="color:red">單機模式</span> 部署簡單,單節點 測試環境、小流量業務
<span style="color:red">哨兵模式</span> 主從 + 自動故障切換 一般 中等流量,需要高可用
<span style="color:red">集羣模式</span> 分片 + 高可用 非常好 高流量、大規模緩存方案

七、三種連接工廠的底層行為(原理解釋表)🧠

場景 連接工廠行為 對 RedisTemplate 的影響
單機 固定節點連接 所有操作走同一節點
哨兵 由哨兵返回主節點 IP + Port 自動切換主節點,不中斷業務
集羣 根據 Key 的 Slot 路由到對應 Master 支持水平擴容,自動跳 slot

八、生產環境建議(務實可執行)📌

  1. 核心業務必須使用集羣模式,具備高可用與擴容能力。
  2. 對緩存一致性要求高的業務,開啓 JSON 序列化避免亂碼與不兼容。
  3. 哨兵模式適合作為中小規模項目的“降本增效”方案。
  4. 使用 Lettuce(Spring 默認)即可滿足高併發、線程安全、連接池穩定性。
  5. 業務量大時建議分庫分 Key 前綴,提升可維護性。

九、總結(直擊核心)🏁

  • Spring Boot 使用 RedisTemplate 時,本質就是切換不同的連接工廠
  • 單機、哨兵、集羣三種模式都是被 自動適配 的,無需修改業務代碼。
  • 配置文件是關鍵,序列化必須合理,否則容易出現亂碼或類型不兼容。
  • 大規模業務必須選 Redis Cluster,這是事實標準。

如果你需要,我還可以為你繼續生成:

  • Spring Data Redis + Redisson 三模式配置
  • 三種部署的架構圖、數據流圖
  • 結合高可用與性能優化的 Redis 最佳實踐

你要繼續嗎?

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.