.NET 服务无法连接到 Redis

.NET service can't connect to Redis

我正在尝试让 .NET API 能够连接到我的 docker 网络上的 Redis 实例。这是我得到的:

(也许?)相关版本控制:

我已经尝试了所有方法,network inspect,向网络添加和删除两个容器,即使在我的 .NET 代码中使用特殊的连接字符串标志 resolveDns=true。无论我做什么,我都会得到:

StackExchange.Redis.RedisConnectionException: It was not possible to connect to the redis server(s). UnableToConnect on localhost:6379/Interactive, Initializing/NotStarted, last: NONE, origin: BeginConnectAsync, outstanding: 0, last-read: 0s ago, last-write: 0s ago, keep-alive: 60s, state: Connecting, mgr: 10 of 10 available, last-heartbeat: never, global: 0s ago, v: 2.1.58.34321

我在这里失去了理智,Redis 已经启动并且 运行 在 docker 网络上的 localhost:6379,为什么 .NET 无法连接?

是的,我已经通过了自定义 redis.conf,其中也有 bind 0.0.0.0

感谢 Hans Kilian 的评论,我终于能够连接上了!

尽管看似无限的 Redis + Docker 教程在使用 localhost:6379 时说了些什么,但实际上 不是 Redis 是 [=45] 的情况=] 在 Docker 网络中。要找到该 IP,例如使用名为 redis 的容器,问题:

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis

这就是您需要提供的结果 IP 地址和端口 6379 作为您的连接字符串。

tl;博士;

不是:

localhost:6379

但是 Docker 为容器分配的 IP,例如:

172.18.0.7:6379

编辑:您也可以使用容器名称而不是 IP,即:

redis:6379

希望这对可能偶然发现此问题的任何人有所帮助。