目錄
- 前言
- 1. 基本知識
- 2. 配置
前言
🤟 找工作,來萬碼優才:👉 #小程序://萬碼優才/r6rqmzDaXpYkJZF
爬蟲神器,無代碼爬取,就來:bright.cn
Java基本知識:
- java框架 零基礎從入門到精通的學習路線 附開源項目面經等(超全)
- 【Java項目】實戰CRUD的功能整理(持續更新)
一個偶然的機會,突然發現Redis原來是好幾個DB,原先背的八股文都拋之腦后了,接觸下來才發現!

1. 基本知識
? 單機模式下的 Redis:
Redis 默認支持 16 個邏輯數據庫,編號從 0 到 15,可以在 redis.conf 中看到:
databases 16
每個邏輯庫之間是完全隔離的,可以通過命令切換:
SELECT 0 # 切換到 db0
SELECT 1 # 切換到 db1
啟動 Redis 后所有客戶端默認進入 db0
每個邏輯庫內的 key-value 是獨立的,不共享
🔗 二、Redis 集群沒有邏輯數據庫概念(db=0)
重點:Redis Cluster 模式下只能使用 db 0,其他邏輯數據庫不可用
這是官方明確指出的:
When using Redis Cluster, the database number must be zero (db 0), because data is partitioned across multiple nodes.
原因:
Redis Cluster 的分布式設計是基于 key 的哈希槽進行數據分片存儲(16384 個 slot),不再使用多邏輯數據庫
🧠 三、Redis 數據分布機制(單機 vs 集群)
| 模式 | 數據庫數量 | 數據存儲方式 | key 分布 |
|---|---|---|---|
| 單機 Redis | 默認 16 個 | 所有數據在一個實例內 | 按邏輯數據庫隔離 |
| Redis Cluster | 僅 db0 | 按 key 哈希分到多個節點 | 按 slot 分布 |
📌 集群模式下的分布原理:(這一部分八股文常考,不過實際原理是這樣的)
Redis 把 key 映射到 0~16383 共 16384 個 hash slot
每個節點負責一部分 slot。
比如:Node1 負責 0~ 5460,Node2 負責 5461~ 10922,Node3 負責 10923~16383
key 根據 CRC16 計算 slot,然后落在對應節點
2. 配置
🧾 Spring Boot 中 Redis 的配置方式(yaml)
? 單機版 YAML 示例:
spring:redis:host: 127.0.0.1port: 6379password: 123456database: 1 # 使用第1個邏輯數據庫(db1)
截圖如下:(生產環境 測試環境 如果是同一個服務器,可以專門區分下)

? 單機版 Java 配置(application.properties):
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=123456
spring.redis.database=2
說明:默認 database=0
設置 spring.redis.database=1 會在連接 Redis 后自動執行 SELECT 1
以下的集群模式(我是通過DeepSeek了解,后續還未進行驗證):
🧾 Redisson 的配置說明(適用于單機與集群)
? 單機模式配置:
redisson:config: |singleServerConfig:address: "redis://127.0.0.1:6379"database: 1password: 123456
或者 Java 方式:
Config config = new Config();
config.useSingleServer().setAddress("redis://127.0.0.1:6379").setDatabase(1).setPassword("123456");
RedissonClient redisson = Redisson.create(config);
? 集群模式配置(只支持 db0,不可設置 database):
redisson:config: |clusterServersConfig:nodeAddresses:- "redis://192.168.1.1:7000"- "redis://192.168.1.2:7001"- "redis://192.168.1.3:7002"password: 123456