.NET 服务无法连接到 Redis
.NET service can't connect to Redis
我正在尝试让 .NET API 能够连接到我的 docker 网络上的 Redis 实例。这是我得到的:
- Redis 容器:启动并 运行 在自定义 docker 网络
my-network
上 localhost:6379
- .NET 服务:尝试在自定义 docker 网络
my-network
上启动并 运行
(也许?)相关版本控制:
- Abp.RedisCache 5.4.0
- StackExchange.Redis 2.1.58
我已经尝试了所有方法,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
希望这对可能偶然发现此问题的任何人有所帮助。
我正在尝试让 .NET API 能够连接到我的 docker 网络上的 Redis 实例。这是我得到的:
- Redis 容器:启动并 运行 在自定义 docker 网络
my-network
上localhost:6379
- .NET 服务:尝试在自定义 docker 网络
my-network
上启动并 运行
(也许?)相关版本控制:
- Abp.RedisCache 5.4.0
- StackExchange.Redis 2.1.58
我已经尝试了所有方法,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
希望这对可能偶然发现此问题的任何人有所帮助。