微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

StackExchange.Redis:没有可用的连接服务此操作无法在HOST:PORT上连接/交互

如何解决StackExchange.Redis:没有可用的连接服务此操作无法在HOST:PORT上连接/交互

我正在尝试从C#连接REdis数据库(GCP-memorystore-Redis)。将值设置为Redis时,出现类似以下的异常:

没有可用的连接服务。无法在 10.0.0.2 6379 / 交互式上进行连接,正在初始化,最后一次:无,起源:BeginConnectAsync,未完成:0,最后读取:10s前一次,最后一次写入:10年前,未回答:115年前,保持活动状态:180s,状态:正在连接,mgr:10(共10)可用,最后一次心跳:从不,全局:0s之前,v: 2.0 .519.65453 ; IOCP:(忙= 0,空闲= 1000,最小值= 1,最大值= 1000),工作人员:(忙= 1,空闲= 32766,最小值= 1,最大值= 32767),本地cpu:n / a

我正在使用 StackExchange.Redis 版本:2.0.519

代码

               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");

请帮忙。

解决方法

似乎ConnectionMultiplexer连接字符串中的变量“主机”不正确。查看您的异常“在IPAddress:6379 / Interactive上的UnableToConnect”。因此,您的变量“端口”是正确的,其值为6379。也许您将“主机”变量转换为字符串的错误。因此,其中包含类型的变量(IPAddress)而不是实际值。

,

看起来可能主要是格式/串联问题,在这种情况下,最简单的方法是:请勿这样做。有一个强类型的对象模型,很难出错:

var config = new ConfigurationOptions {
    EndPoints = {
        new DnsEndPoint(host,port),// new IPEndPoint(host,// <== or this if 'host' is an IPAddress
    },ResolveDns = true,AbortOnConnectFail = false,KeepAlive = 180,ConnectTimeout = 10000,};
var muxer = ConnectionMultiplexer.Connect(config);

在内部,如果您给它一个string,它要做的第一件事就是解析string以创建上面的代码,因此您也可以直接使用它!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。