【发布时间】:2020-06-26 01:56:20
【问题描述】:
我正在将 .NET 核心应用程序连接到 AWS ElastiCache Redis。
AWS Elasticache Redis 正在运行,并且端口 6329 在安全组上打开。客户端代码使用StackExchange.Redis:
var redis = ConnectionMultiplexer.Connect("redis-1.xxxx.0001.use1.cache.amazonaws.com:6379");
//var redis = ConnectionMultiplexer.Connect("localhost"); //working
IDatabase db = redis.GetDatabase();
string value = "abcdefg";
db.StringSet("mykey", value);
string value2 = db.StringGet("mykey");
Console.WriteLine(value2); // writes: "abcdefg"
Console.ReadLine();
例外是:
无法连接到 redis 服务器。无法连接 在 redis-1.xxx.0001.use1.cache.amazonaws.com:6379/Interactive 上, Initializing/NotStarted, last: NONE, origin: BeginConnectAsync, 未完成:0,上次读取:5 秒前,上次写入:5 秒前,保持活动状态: 60 秒,状态:正在连接,管理器:10 个可用,10 个可用,最后一次心跳: 从不,全球:0 秒前,v:2.0.601.3402
添加到,abortConnect=false的端点,我可以连接了。
现在错误在StringSet
StackExchange.Redis.RedisConnectionException: '没有连接 可用于服务此操作:SET mykey; UnableToConnect ...
.NET 代码在我的本地 Redis 服务中运行良好,因此我的 AWS 设置看起来不正确。
成功ssh 到我的 EC2 实例和 redis-cli 到我的 AWS redis 服务:
有什么想法吗?
注意:默认情况下,AWS Elasticache Redis 不可用于公共访问。
【问题讨论】:
-
也许尝试使用工作站上的 redis-cli 连接到服务器?
-
成功 ssh 到一个 ec2-instance 并运行 redis-cli 对我的 aws redis 服务。但仍然从 .net 应用程序失败 (docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/…)
-
为了清楚起见,当您将代码部署到同一个 EC2 实例时,您会收到此错误吗?在这种情况下,应该没有任何问题,因为 redis-cli 可以正常连接。
-
我正在从我的机器上运行 .net 代码。认为
redis-1.xxxx.0001.use1.cache.amazonaws.com:6379可以通过安全组公开(所有 IP 的 TCP\6379)? -
尝试从您自己的机器连接到您的 redis 服务器,然后使用 redis-cli,而不是从 EC2。
标签: amazon-web-services .net-core redis amazon-elasticache