后端连接 Redis 数据库

后端连接 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 区分,隔离性更好