如果用AnnotherRedisDesktopManager无法找到向量化后的数据,则说明这个工具是连接到了本地的Redis
运行这条命令,看是哪些服务映射到了这个端口上
netstat -ano | findstr :6379

记下 PID(比如 17236),然后:
tasklist | findstr 13236
这是 Docker Desktop 的后台服务,它负责管理容器网络。
PID: 17236 → com.docker.backend.exe
⚠️ 重点来了:PID 5068 是谁?
执行:
tasklist | findstr 5068
返回
redis-server.exe 5068 Console
- 如果是
redis-server.exe→ 说明你连的是 本地 Redis(不是 Docker!) - 如果是
dockerd.exe或com.docker.backend.exe→ 才是 Docker
🛠 解决方案
✅ 方案一:停止本地 Redis,让 Docker 使用 6379
1. 停止本地 Redis 服务
net stop redis
如果提示“服务未找到”,说明你没装服务版,可能是直接运行的
.exe
2. 杀掉 Redis 进程
taskkill /f /pid 5068
3. 删除旧容器并重新启动
docker rm -f redis-stack-server
docker run -d --name redis-stack-server -p 6379:6379 redis/redis-stack-server:latest
4. 验证是否成功
netstat -ano | findstr :6379
现在应该只有:
0.0.0.0:6379 -> PID 17236 (docker)
💡 很多用户的问题根源就是:Windows 上装过 Redis,它占用了 6379,Docker 容器虽然运行,但无法绑定端口,导致你实际连的是旧 Redis!
✅ 方案二:改用其他端口(推荐)
如果你不想关掉本地 Redis,可以换一个端口:
docker run -d --name redis-stack-server -p 6380:6379 redis/redis-stack-server:latest
然后在 Spring Boot 中修改配置:
spring:
ai:
vectorstore:
redis:
uri: redis://localhost:6380
这样就不会冲突!
💡 如何确认 Docker 容器是否加载了 RedisJSON?
进入容器内部测试:
docker exec -it redis-stack-server redis-cli
MODULE LIST
✅ 正确输出应包含:
1) 1) "name"
2) "ReJSON"
3) "ver"
4) "20025"
如果没看到 → 模块未加载,可能是镜像问题。
✅ 最终验证流程
| 步骤 | 命令 | 期望结果 |
|---|---|---|
| 1. 停止本地 Redis | net stop redis | 成功停止 |
| 2. 删除旧容器 | docker rm -f redis-stack-server | 容器删除 |
| 3. 启动新容器 | docker run -d ... -p 6379:6379 ... | 容器运行 |
| 4. 查看端口 | `netstat -ano | findstr :6379` |
| 5. 测试 JSON.SET | redis-cli -p 6379 JSON.SET test $ '{"hello":"world"}' | 成功 |
| 6. Spring Boot 写入 | 发送请求 | 不再报错 |
📌 总结
| 问题 | 原因 | 解决 |
|---|---|---|
JSON.SET 不存在 | 连的是普通 Redis,不是 Redis Stack | 关闭本地 Redis 或换端口 |
| Docker 无法绑定端口 | 被 redis-server.exe 占用 | 执行 net stop redis |
net stop redis 报错 | 权限不足 | 以管理员身份运行 CMD |
| 容器运行但无数据 | 实际连的是旧 Redis | 检查连接地址 |
🔗 下载 redis-cli(Windows)
- https://github.com/MSOpenTech/redis/releases
- 下载
redis-windows.zip - 解压后将
redis-cli.exe添加到环境变量 PATH
1423

被折叠的 条评论
为什么被折叠?



