*Redis SELECT 命令

切换到指定索引的数据库。


*语法

SELECT index

*参数说明

参数 类型 必填 说明
index Integer 数据库索引,默认 0-15(由 databases 配置决定)

*返回值

条件 返回值
切换成功 OK
索引无效 错误 ERR DB index is out of range

*时间复杂度

O(1)

*

*示例

> SELECT 0
OK
> SET key1 value1
OK

> SELECT 1
OK
> SET key1 value_in_db1
OK

> SELECT 0
OK
> GET key1
"value1"

*常见错误

  1. 索引超出范围:默认 databases=16,SELECT 16 报错。
  2. 集群模式不支持 SELECT:Redis Cluster 只有 DB 0,SELECT 其他索引报错。

*最佳实践

  1. 命名空间隔离:不同业务用不同 DB 隔离,如 DB0 缓存、DB1 会话、DB2 队列。
  2. 集群环境:Cluster 模式只有 DB0,用 key 前缀(如 cache:user:1001)隔离命名空间。
  3. 避免频繁切换:连接池按 DB 分池,不要在同一连接频繁 SELECT。

*FAQ

Q: SELECT 后之前的 key 还能访问吗? A: 不能。SELECT 切换当前连接的数据库上下文,只影响当前连接。

Q: 不同 DB 的 key 会互相影响吗? A: 不会。FLUSHDB 只清空当前 DB,FLUSHALL 清空所有 DB。

Q: Redis 有多少个 DB? A: 默认 16 个(0-15),由 redis.conf 的 databases 配置,可修改。