我正在将.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上,初始化/未启动,最后:无,来源:BeginConnectAsync,优秀:0,上次阅读:5s之前,上次写入:5s之前,保持活动:60s,状态:Connecting,mgr: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不可用于公共访问。
问题:“ ...端口6329在安全组上处于打开状态。。您不是说6379吗?
即使,我认为我在“默认”子网组上也有问题。
AWS ElastiCache Redis所在的VPC_Subnet(在该组中)是否具有可访问Internet网关的路由表?如果没有,则需要将InternetGteway附加到路由表,然后在所需的子网中使用该路由表。
应该像选择:Internet GW