首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何连接到一个红调哨兵,需要ServiceStack.Redis?

我如何连接到一个红调哨兵,需要ServiceStack.Redis?
EN

Stack Overflow用户
提问于 2017-02-15 17:12:25
回答 1查看 2.9K关注 0票数 1

我在本地机器上有一个简单的redis集群,它包括:

  • 船长在第3679号港口
  • 6380端口上的奴隶
  • 26379港哨兵

到目前为止,我正在使用ServiceStack.Redis进行连接,没有任何问题。今天,我使用requirepass 42设置向每个用户添加了一个密码。我可以连接到所有他们使用Redis桌面经理罚款和所有的工作,如预期。

使用下面的代码,当我试图连接时会得到一个错误。删除密码的工作原理是预期的。

代码语言:javascript
运行
复制
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可用“(),但的内部例外是”unknown 'AUTH'"

我不清楚我是否不正确地使用ServiceStack.Redis库,或者我的Redis集群配置不正确。

某个人能把我引向正确的方向吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-15 19:50:03

您可以使用HostFilter指定密码:

代码语言:javascript
运行
复制
sentinel.HostFilter = host => $"{config.SecurityKey}@{host}?db={config.Database}";

但是,当使用密码时,需要在任何地方配置密码,即在两个主从配置中使用:

代码语言:javascript
运行
复制
requirepass password
masterauth password

Redis还需要配置为使用相同的密码,这样它就可以控制它正在监视的redis实例,这些实例可以在您的sentinel.conf中配置如下:

代码语言:javascript
运行
复制
sentinel auth-pass mymaster pasword

windows-密码项目中的redis-config文件夹显示了一个受密码保护的Redis配置示例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42255954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档