C# StackExchange.Redis:没有可用于服务此操作的连接。无法在主机上连接:端口/交互
我正在尝试从C#连接REDIS数据库(GCP memorystore REDIS)。在将值设置为Redis时,我遇到了如下异常: 没有可用于此操作的连接。无法连接10.0.0.2:6379/交互,初始化,最后:无,来源:BeginConnect异步,未完成:0,上次读取:10秒前,最后写入:10秒前,未响应写入:115s前,保持活动状态:180s,状态:连接,管理器:10/10可用,最后心跳:从不,全局:0秒前,v:2.0.519.65453;IOCP:(忙=0,空闲=1000,最小=1,最大=1000),工作线程:(忙=1,空闲=32766,最小=1,最大=32767),本地CPU:n/a 我正在使用StackExchange.Redis版本:2.0.519 代码: (或者)我也尝试使用下面的代码来设置值。(得到同样的问题)C# StackExchange.Redis:没有可用于服务此操作的连接。无法在主机上连接:端口/交互,c#,asp.net-core,google-cloud-platform,redis,google-cloud-memorystore,C#,Asp.net Core,Google Cloud Platform,Redis,Google Cloud Memorystore,我正在尝试从C#连接REDIS数据库(GCP memorystore REDIS)。在将值设置为Redis时,我遇到了如下异常: 没有可用于此操作的连接。无法连接10.0.0.2:6379/交互,初始化,最后:无,来源:BeginConnect异步,未完成:0,上次读取:10秒前,最后写入:10秒前,未响应写入:115s前,保持活动状态:180s,状态:连接,管理器:10/10可用,最后心跳:从不,全局:0秒前,v:2.0.519.65453;IOCP:(忙=0,空闲=1000,最小=1,最大=
您能在这方面提供帮助吗。您的ConnectionMultiplexer connectionstring中的变量“host”似乎不正确。查看您的异常“无法连接IPAddress:6379/Interactive”。因此,变量“port”是正确的,它的值为6379。也许您的“主机”变量到字符串的转换是错误的。因此,变量类型(IPAddress)而不是实际值。看起来这可能主要是一个格式/连接问题,在这种情况下,最简单的方法是:不要这样做。有一种强类型对象模型,很难出错:
var config=新配置选项{
端点={
新的DnsEndPoint(主机、端口),
//新建IPEndPoint(主机、端口),//好吧,它能连接吗?abortConnect=False有时很有用,但在这种情况下,我会说“现在就把它拿走”,这样如果它不能连接,它会更快停止。redis cli连接成功吗?这里涉及TLS吗?注意:我看到过“redis like”数据库无法成功地实现redis的全部特性-我还没有明确针对memorystore进行测试,我需要看看他们是否可以提供免费服务供我再次测试(坦率地说:我并没有自费提供免费支持)@MarcGravel:我在redisDB.StringSet(“RedisKey”,“RedisValue”)上遇到错误.在redis.GetDatabase()处未获取错误;因此,这意味着与Redis成功连接。我是吗?GetDatabase
几乎什么都不做;它不与服务器通信;有趣的操作是Connect
,和GetString
——但是当你添加abortConnect=False
时,你告诉Connect
假装连接良好。长话短说(太晚了):不,代码中没有任何内容表明您已“成功连接Redis”,例外情况强烈建议您没有。请指出您尝试连接到REDIS的位置。从Compute Engine连接与从App Engine或Kubernetes连接不同。感谢您的回复。此处的IPAddress表示,我正在传递“我的REDIS服务ip(10.0.0.4)”,因此我遇到如下错误“无法连接10.0.0.4:6379/交互式”
IDatabase redisDB;
try {
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect($"{host}:{port},resolvedns=1,abortConnect=False,keepAlive=180,connectTimeout=10000");
redisDB = redis.GetDatabase();
if(redisDB==null)
{
**//Getting Error**
var messageId = redisDB.StreamAdd("event_stream", "foo_name", "bar_value");
//redisDB.StringSet("RedisKey", "RedisValue");
}
}
redisDB.StringSet("RedisKey", "RedisValue");