栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

ServiceStack.Redis.Sentinel的用法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ServiceStack.Redis.Sentinel的用法

您应该只向Redis
Sentinel服务器的主机提供服务,

RedisSentinel
因为它会从Sentinel主机获取其他主/从Redis服务器的活动列表。

RedisSentinel
最近在 MyGet
中可用的最新 v4.0.37
中对进行了一些更改,其中包括额外的日志记录和Redis Sentinel事件的回调。新的 v4.0.37 API如下所示:

var sentinel = new RedisSentinel(sentinelHost, masterName);

启动RedisSentinel将连接到Sentinel主机,并返回一个预配置的RedisClientManager(即redis连接池),其中活动的

var redisManager = sentinel.Start();

然后,您可以使用以下方法在IOC中进行注册:

container.Register<IRedisClientsManager>(redisManager);

然后,它们

RedisSentinel
应侦听Sentinel主机上的主/从更改,并相应地对 redisManager
进行故障转移。然后,处置池中的现有连接,并用新池替换新配置的主机。如果再次使用该池之外的任何活动连接,它们将抛出连接异常,下次从该池中检索RedisClient时,它将使用新主机进行配置。

回调和记录

这是一个示例,说明如何使用新的回调来内省RedisServer事件:

var sentinel = new RedisSentinel(sentinelHost, masterName){    onFailover = manager =>     {        "Redis Managers were Failed Over to new hosts".Print();    },    onWorkerError = ex =>    {        "Worker error: {0}".Print(ex);    },    onSentinelMessageReceived = (channel, msg) =>    {        "Received '{0}' on channel '{1}' from Sentinel".Print(channel, msg);    },     };

还可以通过在ServiceStack中配置Logging来启用这些事件的日志记录:

LogManager.LogFactory = new ConsoleLogFactory(debugEnabled:false);

还有一个附加的显式变量

FailoverToSentinelHosts()
,可用于强制
RedisSentinel
重新查找和故障转移到最新的主/从主机,例如:

var sentinelInfo = sentinel.FailoverToSentinelHosts();

新的主机在返回的sentinelInfo中可用:

"Failed over to read/write: {0}, read-only: {1}".Print(    sentinelInfo.RedisMasters, sentinelInfo.RedisSlaves);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/367011.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号