目录
- 前言
- 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