window环境下搭建Redis+Sentinel集群环境

要搭建Redis 环境

主库 127.0.0.1:7501

从库两个 127.0.0.1:7502 、 127.0.0.1:7503  

Sentinel三个 127.0.0.1:7504、127.0.0.1:7505、127.0.0.1:7506

一、下载及安装

参照:http://www.runoob.com/redis/redis-install.html

二、搭建Redis集群

建一个文件夹Redis-sentinel,复制6个Redis-x64文件夹进去,分别命名如下:

主库:Redis-7501

从库:Redis-7502、Redis-7503

Sentinel:Redis-7504、Redis-7505、Redis-7506

三、启动主库

修改配置文件redis.windows.conf

port 7501  //修改端口

启动:cmd进入文件夹Redis-7501,运行redis-server.exe redis.windows.conf

四、启动从库

修改配置文件redis.windows.conf

port 7502  //修改端口

slaveof 127.0.0.1 7501  // 设置主库

 启动:cmd进入文件夹Redis-7502,运行redis-server.exe redis.windows.conf

同理启动 Redis-7503

五、sentinel部署

在文件夹Redis-7504中添加 sentinel.conf,内容如下 

port 7504   // 设置Sentinel服务运行的端口  

sentinel monitor mymaster 127.0.0.1 7501 2
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 15000

 说明:

1.sentinel monitor mymaster 127.0.0.1 7501 2

     Sentinel监视名为mymaster的主redis实例127.0.0.1:7501,判断主实例失效至少需要2个 Sentinel进程的同意

2.sentinel down-after-milliseconds mymaster 5000

    指定Sentinel认为Redis实例已经失效所需的毫秒数。当实例超过该时间没有返回PING,或者直接返回错误,那么Sentinel将这个实例标记为主观下线。

   只有一个 Sentinel进程将实例标记为主观下线并不一定会引起实例的自动故障迁移。

   只有在足够数量的Sentinel都将一个实例标记为主观下线之后,实例才会被标记为客观下线,这时自动故障迁移才会执行。  
3.sentinel parallel-syncs mymaster 1

   指定在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长
4.sentinel failover-timeout mymaster 15000

   如果在该时间(ms)内未能完成failover操作,则认为该failover失败

 启动:cmd进入文件夹Redis-7504,运行redis-server.exe sentinel.conf --sentinel

六、检查Redis集群

cmd进入文件夹Redis-7501,运行redis-cli.exe -h 127.0.0.1 -p 7501

输入info,可看到

......

role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=7502,state=online,offset=771739,lag=1
slave1:ip=127.0.0.1,port=7503,state=online,offset=771739,lag=1

......

说明当前redis为主,有两个从库,分别为127.0.0.1:7502、127.0.0.1:7503

七、检查sentinel

cmd进入文件夹Redis-7504,运行redis-cli.exe -h 127.0.0.1 -p 7504

输入info sentinel,可看到

sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:7501,slaves=2,sentinels=3

说明有3个sentinel已经运行

注:可shutdown127.0.0.1:7501,sentinel会在5秒后把127.0.0.1:7502修改为主库,重新启动的127.0.0.1:7501会自动成为其中一个从库

八、C#访问

引用ServiceStack.Text.dll、ServiceStack.Redis.dll、ServiceStack.Interfaces.dll、ServiceStack.Common.dll

注:版本要高一些,以下测试代码,上面4个类库均在4.0以上

1.实例化

var hosts = "127.0.0.1:7504;127.0.0.1:7505;127.0.0.1:7506".Split(';');

ServiceStack.Redis.RedisSentinel sentinel = new ServiceStack.Redis.RedisSentinel(hosts, "mymaster");

var redisManager=sentinel.Start();

2.访问

redisManager.GetClient().Set<string>("test", "123");

redisManager.GetClient().Get<string>(“test”);

代码就不说明了

原文地址:https://www.cnblogs.com/biyyss_sun/p/8025231.html