Jedis连接本地Docker部署的Redis实例出现Connection refused错误
问题根因
Dockerfile中声明的EXPOSE 6379仅为镜像的端口说明标识,不会自动将容器端口映射到宿主机对应端口。你当前启动Redis容器时未配置端口映射规则,宿主机的localhost:6379没有实际服务监听,因此Jedis连接会抛出拒绝异常。
解决方案
- 停止并删除现有未配置端口映射的Redis容器
执行以下命令:docker stop some-redis docker rm some-redis - 重新启动Redis容器,添加端口映射参数
使用-p 宿主机端口:容器端口参数配置端口转发规则,将宿主机6379端口的请求转发到容器内部的6379端口:docker run --name some-redis -p 6379:6379 -d redis - 验证连接可用性
可先在本地终端执行redis-cli ping,如果返回PONG说明Redis服务已可从宿主机正常访问,再运行Jedis代码即可完成连接、读写操作。
如果宿主机6379端口已被其他服务占用,可将映射规则改为其他可用端口,例如-p 6380:6379,对应Jedis代码中的连接端口也要同步修改为6380。
内容的提问来源于stack exchange,提问作者Veer7
相关产品推荐
相关产品推荐

