Redis集群~StackExchange.redis连接Sentinel服务器并订阅相关事件
来源:互联网 发布:linux系统关机命令 编辑:程序博客网 时间:2024/06/11 14:17
对于redis-sentinel我在之前的文章中Redis集群~StackExchange.redis连接Twemproxy代理服务器 已经说过,它是一个仲裁者,当主master挂了后,它将在所有slave服务器中进行选举,选举的原则当然可以看它的官方文章,这与我们使用者没有什么关系,而对于sentinel来说,它在进行主从切换时,会触发相关事件,这是和我们开发人员有关系的,如当+switch-master事件被触发时,说明当前Sentinal已经完成了一次主从的切换,并所有服务已经正常运转了。
下面是我这几天作的测试,对于Twemproxy代理和Sentinal哨兵都已经成功使用stackExchange.redis进行了连接,并正常访问了,当然Sentinel只公开了几个redis命令,这个大家要清梦,不明白的可以看我的这篇文章《Redis集群~windows下搭建Sentinel环境及它对主从模式的实际意义》。
连接普通的redis服务器
ConnectionMultiplexer conn = ConnectionMultiplexer.Connect("127.0.0.1:6379");
ConfigurationOptions option = new ConfigurationOptions(); option.EndPoints.Add("127.0.0.1", 6379); ConnectionMultiplexer conn = ConnectionMultiplexer.Connect(option);
连接TW代理服务器
ConfigurationOptions twOption = new ConfigurationOptions(); twOption.EndPoints.Add("127.0.0.1", 22122); twOption.EndPoints.Add("127.0.0.1", 22123); twOption.Proxy = Proxy.Twemproxy;//代理的类型 ConnectionMultiplexer conn = ConnectionMultiplexer.Connect(twOption);
连接Sentinal仲裁哨兵服务器
//连接sentinel服务器 ConfigurationOptions sentinelConfig = new ConfigurationOptions(); sentinelConfig.ServiceName = "master1"; sentinelConfig.EndPoints.Add("192.168.2.3", 26379); sentinelConfig.EndPoints.Add("192.168.2.3", 26380); sentinelConfig.TieBreaker = "";//这行在sentinel模式必须加上 sentinelConfig.CommandMap = CommandMap.Sentinel; // Need Version 3.0 for the INFO command? sentinelConfig.DefaultVersion = new Version(3, 0); ConnectionMultiplexer conn = ConnectionMultiplexer.Connect(sentinelConfig);
有了上面的代码后,我们可以成功的连接一个sentinel服务器,对这个连接的实际意义在于:当一个主从进行切换后,如果它外层有Twemproxy代理,我们可以在这个时机(+switch-master事件)通知你的Twemproxy代理服务器,并更新它的配置文件里的master服务器的地址,然后从起你的Twemproxy服务,这样你的主从切换才算真正完成。
对于Twemproxy-sentinal-master/slave主从切换实现图
我们可以使用.netcore开发一个跨平台的程序,将它放在linux的tw代理服务器上,使用dotnet run去运行它,然后当收到由sentinel发来的+switch-master事件时,将更新tw配置文件并从起它的服务。
希望大家对技术多一点深度的研究,找不到答案就看看它的源代码,可能会有意外的收获!
相关文章:
Redis到底该如何利用(一)?
Redis到底该如何利用(二)?
Redis 3.0.0正式版发布,高性能 K/V 服务
用Docker构建分布式Redis集群
推荐–个通用缓存接口抽象类库:CacheManager
asp.net core 使用 Redis 和 Protobuf 进行 Session 缓存
C#使用Redis集群缓存
Azure Redis 缓存的 ASP.NET 会话状态提供程序
搜狐视频Redis私有云cachecloud开源了
在.Net项目中使用Redis作为缓存服务
Redis集群~StackExchange.redis连接Twemproxy代理服务器
原文地址:http://www.cnblogs.com/lori/p/5829250.html
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
- Redis集群~StackExchange.redis连接Sentinel服务器并订阅相关事件
- StackExchange.Redis官方文档(六)【事件,发布订阅,服务器命令】
- Redis集群~StackExchange.redis连接Twemproxy代理服务器
- [StackExchange]Redis 发布订阅
- Redis Sentinel环境下的Key过期事件消息订阅
- Redis Sentinel环境下的Key过期事件消息订阅
- Redis sentinel集群实验
- Redis Sentinel集群方案
- redis+sentinel集群部署
- redis-sentinel集群安装
- StackExchange.Redis
- Redis Sentinel;Redis Sentinel配置;redis集群;redis故障转移
- Redis Sentinel;Redis Sentinel配置;redis集群;redis故障转移
- Redis集群~StackExchange.Redis(10月6号版1.1.608.0)连接Twemproxy支持Auth指令了
- redis集群部署sentinel—两台服务器实现
- Redis Sentinel:集群Failover解决方案
- Redis Sentinel:集群Failover解决方案
- Redis Sentinel:集群Failover解决方案
- 如何在 ASP.NET MVC 中集成 AngularJS
- Asp.net Core 使用MyCat分布式数据库,实现读写分离
- 第一篇:Dapper快速学习
- StackExchange.Redis客户端读写主从配置,以及哨兵配置
- Google 的开源方法论
- Redis集群~StackExchange.redis连接Sentinel服务器并订阅相关事件
- Swift4.0 guard,Array,Dictionary
- 基于.NET SingalR,LayIM2.0实现的web聊天室
- .Net Core 中的包、元包与框架(Packages, Metapackages and Frameworks)
- Google高性能RPC框架gRPC 1.0.0发布
- C#7.0中有哪些新特性?
- .Net Aop(静态织入)框架 BSF.Aop
- 替代反射调用的几种方式及性能测试
- POJ 3280 Cheapest Palindrome