.net core使用CSRedisCore訪問Redis主從+哨兵
本文主要目的是對Redis主從+哨兵的高可用方案進行實驗,文中使用的技術不進行深入說明,想深入瞭解的可自行百度。
用到的軟體和版本:
- CSRedisCore版本:3.0.6.2 (https://github.com/2881099/csredis)
- Redis版本:3.2.100 (windows)
1. 下載Redis安裝包
本示例使用Windows10搭建Redis環境,Windows下的Redis下載方式如下
開啟網址 https://github.com/microsoftarchive/redis/releases,下載3.2.100的壓縮包
2. 搭建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
#配置埠,分別配置6479和6579
port 6479
#是否保護模式
protected-mode no
#配置主redisd的IP和埠
slaveof 192.168.1.5 6379
現在Redis配置好了,執行3個Redis目錄中的run.bat啟動服務,執行後可以看到主從都成功連線。
3.搭建哨兵
實際使用中一般會使用多個哨兵進行監控,本文作了簡化,只使用1個哨兵,多個哨兵都是相同的配置,僅區分埠。
將Redis目錄複製一份命名為RedisSentinel,新增sentinel.conf檔案,內容如下:
port 27000 #哨兵執行埠
protected-mode no #非保護模式執行
#監控的主Redis的IP和埠,1表示1個哨兵
sentinel monitor redis-master 192.168.1.5 6379 1
#主機掉線以後5s進行認證,如果無法連線則重新由哨兵從slave中選出新的master
sentinel down-after-milliseconds redis-master 5000
sentinel failover-timeout redis-master 60000
CMD中通過命令執行哨兵
redis-server sentinel.conf --sentinel
可以看到哨兵已經發現1主2從並開始監聽了
也可通過命令檢視哨兵狀態
redis-cli -p 27000 info sentinel
4. .NET Core中使用Redis叢集
我們使用CSRedisCore來訪問Redis,CSRedisCore是國內大牛開發的一個.net core redis 元件,原始碼可讀性很強非常乾淨,幾乎無任何依賴。效能相比ServiceStack.Redis和StackExchange.Redis會快10%左右,支援Redis的高階特性:訂閱/釋出,Pipeline,MGet/MSet,叢集,分割槽。
建立一個.net core 控制檯程式,然後新增nuget包
nuget Install-Package CSRedisCore
Program.cs程式碼
using System;
using System.Threading;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
//連線哨兵
var csredis = new CSRedis.CSRedisClient("redis-master", new[] {"127.0.0.1:27000" });
//初始化 RedisHelper
RedisHelper.Initialization(csredis);
while (true)
{
try
{
Test();
}
catch(Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.ReadLine();
}
Console.ReadKey();
}
static void Test()
{
RedisHelper.Set("name", "祝雷");//設定值。預設永不過期
Console.WriteLine(RedisHelper.Get<String>("name"));
RedisHelper.Set("time", DateTime.Now, 1);
Console.WriteLine(RedisHelper.Get<DateTime>("time"));
Console.WriteLine(RedisHelper.Get<DateTime>("time"));
// 列表
RedisHelper.RPush("list", "第一個元素");
RedisHelper.RPush("list", "第二個元素");
RedisHelper.LInsertBefore("list", "第二個元素", "我是新插入的第二個元素!");
Console.WriteLine($"list的長度為{RedisHelper.LLen("list")}");
Console.WriteLine($"list的第二個元素為{RedisHelper.LIndex("list", 1)}");
}
}
}
模擬故障進行測試,啟動程式後,殺死主Redis程式,.net core程式再次訪問Redis會出現一次異常檢查,然後能正常切換到新的master上。
相關文章
- .Net Core 使用 CSRedisCore 訪問 Redis 的哨兵和主從複製Redis
- Docker配置redis主從哨兵DockerRedis
- Redis 主從複製與哨兵Redis
- csredis-in-asp.net core理論實戰-主從配置、哨兵模式RedisASP.NET模式
- helm 安裝redis的主從、哨兵Redis
- Redis高可用-主從,哨兵,叢集Redis
- 詳解Redis主從及哨兵模式Redis模式
- Redis docker 主從模式與哨兵sentinelRedisDocker模式
- .NETcore使用CSRedisCore操作RedisNetCoreRedis
- Redis搭建主從複製、哨兵叢集Redis
- 圖解Redis,Redis主從複製與Redis哨兵機制圖解Redis
- 【Redis學習專題】- Redis主從+哨兵叢集部署Redis
- 淺談:redis的主從複製 + 哨兵模式Redis模式
- 實踐 - 搭建Redis一主兩從三哨兵Redis
- Redis哨兵叢集:哨兵掛了,主從庫還能切換嗎?Redis
- Redis持久化、主從與哨兵架構詳解Redis持久化架構
- Redis的主從複製,哨兵和Cluster叢集Redis
- Redis三種高可用模式:主從、哨兵、叢集Redis模式
- Redis 結合 Docker 搭建哨兵+主從,並整合SpringBootRedisDockerSpring Boot
- linux系統——Redis叢集搭建(主從+哨兵模式)LinuxRedis模式
- 三千字介紹Redis主從+哨兵+叢集Redis
- Redis 主從複製與哨兵優化部署解析Redis優化
- 【redis】使用redis benchmark評估哨兵模式主節點效能Redis模式
- 多伺服器使用Docker設定一主一從三哨兵redis(完整)伺服器DockerRedis
- 11.03:Redis持久化、主從、哨兵、叢集、常見問題重點回顧Redis持久化
- docker Redis單機主從哨兵模式切換失敗DockerRedis模式
- docker-compose安裝redis一主二從三哨兵DockerRedis
- redis主從叢集搭建及容災部署(哨兵sentinel)Redis
- redis安裝,主從複製,哨兵機制,叢集Redis
- 用 docker 學習 redis 主從複製3 redis-sentinel(哨兵模式)DockerRedis模式
- Redis資料型別, Redis主從哨兵和叢集(將資料匯入叢集) ubuntu使用Redis資料型別Ubuntu
- CentOS7.8 環境搭建 Redis 主從複製和哨兵模式CentOSRedis模式
- .Net Core微服務——Consul(4):主從、叢集微服務
- .net core下訪問控制層的實現
- 三臺伺服器使用docker搭建redis一主二從三哨兵,概念-搭建-整合springboot伺服器DockerRedisSpring Boot
- Redis在.net中的使用(3)簡單的主從複製Redis
- 在.net Core中使用StackExchange.Redis 2.0Redis
- 用 docker 學習 redis 主從複製3.2 redis-sentinel「哨兵模式」核心配置-命令-原理DockerRedis模式