后端连接 Redis 数据库

一、核心原理

  1. 连接 Redis 后执行命令 SELECT N 切换数据库,N 取值 0~15
  2. 客户端初始化时可直接指定 db: 0 / db: 1,无需手动执行 SELECT

二、各主流后端代码示例

1. Node.js (ioredis 推荐)

复制代码
const Redis = require("ioredis");

// 连接db0
const redis0 = new Redis({
  host: "127.0.0.1",
  port: 6379,
  password: "", // 有密码填写
  db: 0 // 指定0号库
});

// 连接db1
const redis1 = new Redis({
  host: "127.0.0.1",
  port: 6379,
  password: "",
  db: 1 // 指定1号库
});

redis0.set("key0", "db0数据");
redis1.set("key1", "db1数据");

2. Java SpringBoot (Spring Data Redis)

application.yml 配置
复制代码
spring:
  redis:
    host: 127.0.0.1
    port: 6379
    password:
    database: 0 # 默认0库,改成1就是db1
代码动态切换 db
复制代码
@Autowired
private StringRedisTemplate redisTemplate;

public void testDb1() {
    // 切换db1执行操作
    redisTemplate.execute((RedisCallback<Object>) conn -> {
        conn.select(1); // select 1 切换1号库
        conn.set("key2".getBytes(), "db1测试".getBytes());
        return null;
    });
}

3. Python (redis-py)

复制代码
import redis

# db0
r0 = redis.Redis(host="127.0.0.1", port=6379, db=0, decode_responses=True)
# db1
r1 = redis.Redis(host="127.0.0.1", port=6379, db=1, decode_responses=True)

r0.set("name", "库0")
r1.set("name", "库1")
print(r0.get("name"))
print(r1.get("name"))

4. Go (go-redis)

复制代码
package main

import (
	"context"
	"github.com/go-redis/redis/v8"
)

func main() {
	// db0 客户端
	rdb0 := redis.NewClient(&redis.Options{
		Addr: "127.0.0.1:6379",
		DB:   0,
	})
	// db1 客户端
	rdb1 := redis.NewClient(&redis.Options{
		Addr: "127.0.0.1:6379",
		DB:   1,
	})

	ctx := context.Background()
	rdb0.Set(ctx, "test", "db0", 0)
	rdb1.Set(ctx, "test", "db1", 0)
}

5. PHP (Predis)

复制代码
<?php
require 'vendor/autoload.php';
use Predis\Client;

// db0
$redis0 = new Client([
    'host' => '127.0.0.1',
    'port' => 6379,
    'database' => 0
]);

// db1
$redis1 = new Client([
    'host' => '127.0.0.1',
    'port' => 6379,
    'database' => 1
]);

$redis0->set('a', 100);
$redis1->set('a', 200);

三、原生 Redis 命令切换库

复制代码
# 登录redis-cli
redis-cli

# 默认进入db0
127.0.0.1:6379> select 1
OK
# 现在操作的是db1
127.0.0.1:6379[1]> set test 123

# 切回db0
127.0.0.1:6379[1]> select 0
OK

四、注意事项

  1. 数据库相互隔离:db0 和 db1 的 key 完全独立,相同 key 互不干扰
  2. FLUSHDB 只清空当前选中库;FLUSHALL 清空全部 16 个库
  3. Redis 集群模式下不支持多 db,只能使用 db0
  4. 生产环境推荐:不同业务分不同 Redis 实例,而非只用 db 区分,隔离性更好