我們都知道redis是內存數據庫,數據都存儲在內存當中,當redis服務宕機了,就沒有可用的服務了,請求數據就會失敗,所以我們需要搭建多個服務(集羣),當單個服務崩潰後,其他服務選擇一個替代死掉的服務,繼續工作。提高程序的穩定性。廢話不多說了。
將壓縮包解壓然後複製,總共3份,我們搭建1主2從模式,redis6379(主),redis6479(從),redis6579(從)
主redis配置,進入redis6379目錄中,配置 redis.windows.conf
#配置IP綁定 bind 0.0.0.0 #配置端口 port 6379 #是否保護模式 protected-mode no
目錄下加個run.bat文件,便於雙擊啓動服務
redis-server redis.windows.conf
從Redis配置,分別進入redis6479和redis6579目錄,配置redis.windows.conf,並添加run.bat文件
#配置IP綁定 bind 0.0.0.0 #配置端口 port 6479 #是否保護模式 protected-mode no #配置主redisd的IP和端口 replicaof 127.0.0.1 6579
現在Redis配置好了,運行3個Redis目錄中的run.bat啓動服務,運行後可以看到主從都成功連接。
搭建哨兵
實際使用中一般會使用多個哨兵進行監控,本文作了簡化,只使用1個哨兵,多個哨兵都是相同的配置,僅區分端口。
將Redis目錄複製一份命名爲RedisSentinel,添加sentinel.conf文件,內容如下:
#哨兵運行IP和端口 bind 127.0.0.1 port 27000 #非保護模式運行 protected-mode no #監控的主Redis的IP和端口,1表示1個哨兵 sentinel monitor redis-master 127.0.0.1 6379 1 #主機掉線以後5s進行認證,如果無法連接則重新由哨兵從slave中選出新的master sentinel down-after-milliseconds redis-master 5000 sentinel failover-timeout redis-master 60000
cmd通過命令運行哨兵 :
redis-server sentinel.conf --sentinel
啓動成功
也可通過命令查看哨兵狀態
redis-cli -p 27000 info sentinel
創建控制檯應用程序,
static void Main(string[] args) { //var csredis = "127.0.0.1:27000,password=123456,defaultDatabase=1,prefix="; //連接哨兵,並初始化 RedisHelper.Initialization(new CSRedis.CSRedisClient("redis-master",new string[] { "127.0.0.1:27000"})); while (true) { Test(); } Console.ReadKey(); } static void Test() { try { // 列表 //刪除指定key的列表 RedisHelper.Del("list"); RedisHelper.RPush("list", "第一個元素"); RedisHelper.RPush("list", "第二個元素"); Console.WriteLine($"list的長度爲{RedisHelper.LLen("list")}"); Console.WriteLine($"list的第二個元素爲{RedisHelper.LIndex("list", 1)}"); Thread.Sleep(1000); } catch (Exception ex) { Console.WriteLine("error:"+ex.Message); } }
執行結果:
這樣一個簡易的redis集羣搭建完成