无法通过代码连接到Redis Server,但可以通过Redis Desktop Manager连接



我想连接到Redis服务器,这是我正在使用的代码:

_sentinelHosts = ConfigurationManager.AppSettings["Taurus_Redis_Sentinel_Connection"].Split(',');

var masterName = ConfigurationManager.AppSettings["Taurus_Redis_Master_Name"];
_sentinel = new RedisSentinel(_sentinelHosts, masterName: masterName)
{
OnFailover = manager => // Recursive retry on failovers, but give up after max attempts
{
Log.Error("Failover detected: " + _sentinel.GetMaster());                                        
if (_reconnects < MaxReconnects)
{
System.Threading.Thread.Sleep(1000);
Log.Error("Reconnection attempt: " + ++_reconnects);
InitializeConnection();
}
else
{
Log.Error("Reconnection exceeded max limit of: " + MaxReconnects);
Environment.Exit(1);                        
}
},
};
_redisManager = _sentinel.Start();

在最后一行,我收到错误消息:

但是,当我通过Redis Desktop Manager连接同一台Redis服务器时,我可以成功连接。那么,代码可能有什么问题呢?我仔细检查了一下,两种情况下的主机和主机名都是相同的。

请查看下面的代码示例来设置Redis连接。

ConnectionMultiplexer redis = null;
string redisConnectionUrl = null;
{
var redisSettings = new RedisSettings();
ConfigurationBinder.Bind(Configuration.GetSection("RedisSettings"), redisSettings);
if (redisSettings != null)
{
redisConnectionUrl = $"{redisSettings.Url}:{redisSettings.Port},password={redisSettings.Password}";
}
else
{
var redisEndpointUrl = (Environment.GetEnvironmentVariable("REDIS_ENDPOINT_URL") ?? "127.0.0.1:6379").Split(':');
var redisHost = redisEndpointUrl[0];
var redisPort = redisEndpointUrl[1];
var redisPassword = Environment.GetEnvironmentVariable("REDIS_PASSWORD");
if (redisPassword != null)
{
redisConnectionUrl = $"{redisHost},password={redisPassword}";
}
else
{
redisConnectionUrl = $"{redisHost}:{redisPort}";
}
}
redis = ConnectionMultiplexer.Connect(redisConnectionUrl);
services.AddSingleton<IConnectionMultiplexer>(redis);
}
//my app.config  
"RedisSettings": {
"Url": "127.0.0.1",
"Port": "6379",
"Password": "123456"
}

最新更新