我正在尝试从c#连接redis数据库(gcp memorystore redis)。在将值设置为redis时,会出现如下异常:
没有可用于服务此操作的连接。无法连接10.0.0.2:6379/交互式,初始化,最后:无,源:beginconnectasync,未完成:0,最后读取:10秒前,最后写入:10秒前,未应答写入:115秒前,保持活动:180秒,状态:正在连接,管理器:10个可用,最后心跳:从不,全局:0秒前,v:2.0.519.65453;iocp:(忙=0,空闲=1000,最小=1,最大=1000),工作线程:(忙=1,空闲=32766,最小=1,最大=32767),本地cpu:不适用
我正在使用stackexchange.redisversion: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");
你能帮个忙吗。
2条答案
按热度按时间vdzxcuhz1#
看起来这可能主要是一个格式化/连接问题,在这种情况下,最简单的方法是:不要这样做。有一种强类型的对象模型很难出错:
在内部,如果你给它一个
string
,它要做的第一件事就是解析string
要准确地创建上面的内容,那么您最好直接创建!kh212irz2#
似乎connectionmultiplexer connectionstring中的变量“host”不正确。看看你的异常“无法连接”ipaddress:6379/interactive". 所以变量“port”是正确的,它的值是6379。也许您的“主机”变量到字符串的转换是错误的。所以在它里面有变量类型(ipaddress)而不是实值。