1. 简介
本文将介绍几种在 Redis 中查看可用数据库的方法。虽然 Redis 本身不提供类似 SHOW DATABASES
这样的直接命令,但我们可以通过一些技巧来获取所需信息。
2. 列出所有 Redis 数据库
⚠️ 首先要明确一点:Redis 的数据库数量是固定的,不能动态增删。默认情况下有 16 个数据库(db0
到 db15
),这个值是在配置中定义的。
方法一:通过配置文件查看(最简单粗暴)
如果你能访问 Redis 的配置文件 redis.conf
,直接用 grep
搜索即可:
$ cat redis.conf | grep databases
databases 16
✅ 踩坑提示:某些云服务商(如 AWS ElastiCache)可能会修改默认值,所以不要假设一定是 16。
方法二:使用 redis-cli 动态获取(推荐)
大多数情况下我们更倾向于运行时查询。可以使用 CONFIG GET
命令:
127.0.0.1:6379> CONFIG GET databases
1) "databases"
2) "16"
这个方式适用于生产环境,无需重启或访问文件系统。
方法三:通过 RESP 协议直连(底层玩法,一般用不到)
对于一些需要绕过客户端的场景(比如调试协议兼容性),可以直接用 telnet
发送 Redis 序列化协议(RESP) 消息:
$ telnet 127.0.0.1 6379
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
*3
$6
CONFIG
$3
GET
$9
databases
*2
$9
databases
$2
16
⚠️ 这种方式主要用于底层工具开发,普通业务开发基本不会用到。
3. 查看含有数据的数据库
有时候我们不关心空数据库,只想知道哪些 db
里存了数据。这时候就得用到 Redis 的 INFO
命令。
执行以下命令获取 keyspace
信息:
127.0.0.1:6379> INFO keyspace
# Keyspace
db0:keys=2,expires=0,avg_ttl=0
db1:keys=4,expires=0,avg_ttl=0
db2:keys=9,expires=0,avg_ttl=0
输出说明:
- ✅
keys=N
:该数据库中 key 的数量 - ✅
expires=N
:设置了过期时间的 key 数量 - ✅
avg_ttl=N
:剩余平均存活时间(毫秒)
📌 重点:只有包含至少一个 key 的数据库才会出现在这里。也就是说,这是唯一能准确判断“哪些数据库被用了”的方法。
小技巧:你可以结合
grep
过滤出非空库:redis-cli INFO keyspace | grep -E "db[0-9]+:keys=[1-9]"
4. 总结
方法 | 适用场景 | 推荐程度 |
---|---|---|
grep config |
本地调试、部署脚本 | ✅✅✅ |
CONFIG GET |
生产环境运行时查询 | ✅✅✅ |
INFO keyspace |
查看实际使用中的数据库 | ✅✅✅✅ |
RESP 手动调用 | 协议层调试 | ✅(极少数情况) |
📌 最佳实践建议:
- 如果你只是想确认最大数据库数量 → 用
CONFIG GET databases
- 如果你想知道哪些库真正存了数据 → 用
INFO keyspace
- 不要试图“列出所有数据库名”——Redis 没有这种概念,只有编号
db0~dbN-1
Redis 的多数据库机制其实是个“命名空间”的简化版,实际项目中建议配合 key 前缀使用(如 user:1001
, order:2001
),避免滥用多 db 导致运维混乱。