【发布时间】:2017-02-16 03:50:03
【问题描述】:
我的本地机器上有一个简单的 redis 集群,包括:
- 端口 3679 上的主机
- 从端口 6380
- 26379 端口上的哨兵
到目前为止,我正在使用 ServiceStack.Redis 进行连接,没有任何问题。今天我使用requirepass 42 设置为每个人添加了一个密码。我可以使用 Redis 桌面管理器很好地连接到所有这些,并且一切都按预期工作。
使用以下代码,我在尝试连接时收到错误消息。删除密码按预期工作。
var config = RedisConfiguration.Instance;
Func<string, string> hostFilter = host => string.IsNullOrEmpty(config.SecurityKey)
? $"{host}?db={config.Database}"
: $"{config.SecurityKey}@{host}?db={config.Database}";
var sentinelHosts = config.SentinelHosts.Select(hostFilter);
var sentinel = new RedisSentinel(sentinelHosts, config.ServiceName)
{
HostFilter = hostFilter,
RedisManagerFactory = (master, slaves) => new RedisManagerPool(master)
};
sentinel.OnFailover += manager => Logger?.Warn($"Redis fail over to {sentinel.GetMaster()}");
sentinel.Start()
此代码抛出 RedisException "No Redis Sentinel were available",内部异常为 "unknown command 'AUTH'"。
不清楚是我使用ServiceStack.Redis库不当还是我的Redis集群配置不正确。
有人能指出我正确的方向吗?
【问题讨论】: