Redis集群~StackExchange.redis连接Sentinel服务器并订阅相关事件
對于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服务器并订阅相关事件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于.NET SingalR,LayIM
- 下一篇: StackExchange.Redis客