如何连接并查询 Docker 中的 Redis
在开发或运维中,我们经常需要快速查看 Redis 中存储的数据。如果 Redis 运行在 Docker 容器里,该怎么连接和查询呢?本文基于实际场景,为你梳理最简明的操作步骤。
1️⃣ 查看容器是否暴露了端口
首先,确认 Redis 容器是否把端口映射到了宿主机。执行:
docker ps | grep redis
观察 PORTS 列:
-
如果显示
0.0.0.0:6386->6379/tcp,表示宿主机的 6386 端口映射到了容器的 6379。 -
如果只有
6379/tcp,则没有映射,只能从容器内部或同网络的其他容器访问。
💡 示例:
a23c34642d40 redis:8-alpine ... 0.0.0.0:6386->6379/tcp lucimix-redis-1
→ 宿主机端口是 6386,容器名是 lucimix-redis-1。
2️⃣ 连接到 Redis
根据端口映射情况,有两种常用方式。
方式 A:使用 docker exec(最通用,无需端口映射)
直接在容器内执行 redis-cli:
docker exec -it <容器名> redis-cli
例如:
docker exec -it lucimix-redis-1 redis-cli
进入交互式命令行,提示符变为 127.0.0.1:6379>。
方式 B:从宿主机使用 redis-cli(需映射端口)
若宿主机已安装 redis-cli,可以直接连接映射后的端口:
redis-cli -h 127.0.0.1 -p 6386
如果设置了密码,加上 -a 密码。
3️⃣ 查询数据
连接成功后,即可执行 Redis 命令。
通用命令
| 命令 | 作用 |
|---|---|
KEYS * |
查看所有键(生产环境慎用) |
SCAN 0 |
迭代遍历键(安全替代) |
DBSIZE |
键的数量 |
EXISTS key |
检查键是否存在 |
TYPE key |
查看键的数据类型 |
按类型查询
| 数据类型 | 常用查询命令 |
|---|---|
| String | GET key |
| Hash | HGETALL key 或 HGET key field |
| List | LRANGE key 0 -1 |
| Set | SMEMBERS key |
| Sorted Set | ZRANGE key 0 -1 WITHSCORES |
📝 示例:查询短信验证码
get sms:code:8613333333333
返回验证码值,若不存在则显示 (nil)。
4️⃣ 常见错误及解决
❌ 错误示例(在 redis-cli 交互内重复输入 redis-cli):
127.0.0.1:6379> redis-cli get sms:code:xxx (error) ERR unknown command 'redis-cli'
✅ 正确做法:在交互界面中直接输入命令本身,无需再写 redis-cli。
若想一次性执行单条命令并退出,可不用进入交互:
docker exec -it lucimix-redis-1 redis-cli get sms:code:xxx
5️⃣ 通过 SSH 远程操作(可选)
若需从跳板机或本地远程连接到服务器,可组合 SSH + Docker 命令:
ssh -p 37294 user@host \
'cd /srv/apps/lucimix && docker compose exec -T redis redis-cli get sms:code:xxx'
-
-T确保非交互模式执行,避免终端分配问题。
📌 总结
| 步骤 | 关键点 |
|---|---|
| 查看映射 | docker ps 看 PORTS 列 |
| 连接方式 | 优先 docker exec -it <容器> redis-cli |
| 查询数据 | 先 TYPE 确认类型,再使用对应 GET/HGETALL 等 |
| 规避错误 | 交互中不再输入 redis-cli,直接写命令 |
掌握这些基础操作,你就能高效地从 Docker 容器中获取 Redis 数据,无论是调试还是日常巡检都游刃有余。
浙公网安备 33010602011771号