java redis 如何分库
Redis 分库的实现方法
Redis 本身支持多数据库的概念,但实际应用中更推荐通过以下方式实现分库需求:
使用不同 Redis 实例
创建多个独立的 Redis 实例是最彻底的分库方案。每个实例完全隔离,性能不受其他数据库影响。
配置示例:
# 实例1
port 6379
databases 16
# 实例2
port 6380
databases 16
Java 连接代码:

// 连接实例1
JedisPool pool1 = new JedisPool("127.0.0.1", 6379);
// 连接实例2
JedisPool pool2 = new JedisPool("127.0.0.1", 6380);
使用 SELECT 命令切换数据库
Redis 原生支持通过 SELECT 命令切换数据库(默认16个,编号0-15):
try (Jedis jedis = jedisPool.getResource()) {
jedis.select(1); // 切换到1号数据库
jedis.set("key", "value"); // 操作1号库
jedis.select(2); // 切换到2号数据库
jedis.set("key", "value"); // 操作2号库
}
使用 Key 前缀区分
在单个数据库中通过 key 命名空间实现逻辑分库:

// 业务A的key
String bizAKey = "bizA:user:1001";
// 业务B的key
String bizBKey = "bizB:order:2002";
使用 Redis Cluster
Redis Cluster 自动将数据分片到不同节点,每个节点可视为独立数据库:
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("127.0.0.1", 7000));
nodes.add(new HostAndPort("127.0.0.1", 7001));
JedisCluster cluster = new JedisCluster(nodes);
cluster.set("key", "value"); // 自动路由到对应分片
最佳实践建议
生产环境推荐使用独立实例或集群方案,避免使用 SELECT 命令切换数据库。多数据库功能在 Redis 集群模式下不可用,且官方文档已不建议使用多数据库特性。
对于需要严格隔离的场景,应考虑:
- 不同业务使用不同 Redis 实例
- 通过不同端口或不同机器部署
- 使用 Kubernetes 或 Docker 实现容器级隔离






