redis下载地址
https://github.com/MicrosoftArchive/redis/releases
一、首先把你下载的redis复制两份出来,我的分别如下命名

二、修改配置文件
2.1、我的默认Redis-6380为 master,配置文件redis.windows.conf
#bind 127.0.0.1 注释掉,开启远程连接
protected-mode no #关闭私有
port 6381
2.2、Redis-6381和Redis-6382 为 slave,修改配置文件
2.2.1、Redis-6381的 redis.windows.conf
#bind 127.0.0.1 注释掉,开启远程连接
protected-mode no #关闭私有
port 6381
slaveof 192.168.0.152 6380 #配置主节点
2.2.2、Redis-6381的 redis.windows.conf
#bind 127.0.0.1 注释掉,开启远程连接
protected-mode no #关闭私有
port 6382
slaveof 192.168.0.152 6380 #配置主节点
注:到此redis的1注2从配置完毕,但是redis主从模式在master挂掉后,无法自动切换新的master,需要人为干涉。故需要我们配置哨兵监听,达到自动切换master的效果。
2.3、启动redis 1注2从集群 命令和批处理方式启动
2.3.1 命令启动
服务端
redis-server.exe redis.windows.conf
客户端
redis-cli.exe -h 127.0.0.1 -p 6380
redis-cli.exe -h 127.0.0.1 -p 6381
redis-cli.exe -h 127.0.0.1 -p 6382
测试:进行数据写入,可以看到三个节点都有数据。
2.3.2 批处理方式启动
1.在G:\redis-Sentinel\Redis-6380、G:\redis-Sentinel\Redis-6381和G:\redis-Sentinel\Redis-6382目录下分别新建文件
startRedisServer-6380.bat
startRedisServer-6381.bat
startRedisServer-6382.bat
文件内容如下:
@echo off redis-server.exe redis.windows.conf @pause
2.在和redis文件夹同级建三个cmd 启动文件,start6380.cmd,start6381.cmd,start6382.cmd
我的目录如下:
start6380.cmd 内容如下:
@echo off cd Redis-6380 startRedisServer-6380.bat
start6381.cmd 内容如下:
@echo off cd Redis-6381 startRedisServer-6381.bat
start6382.cmd 内容如下:
@echo off cd Redis-6380 startRedisServer-6380.bat
双击文件启动redis即可。
三、配置哨兵
3.1 在G:\redis-Sentinel\Redis-6380、G:\redis-Sentinel\Redis-6381和G:\redis-Sentinel\Redis-6382目录下分别新建文件
sentinel-26380.conf 内容如下:
# 配置 sentinel 端口号 port 26380 protected-mode no # 以守护进程启动,windows下可注释 # daemonize yes # 绑定只在本地使用 # bind 127.0.0.1 # 日志文件名称 # logfile "sentinel_26380.log" # 日志文件存放地址 # dir "./" # 监控 master 名字叫做 mymaster,地址是 127.0.0.1 端口号是 6379,1 表示有几个 sentinel 认为该 master 出现故障,触发主备切换动作 sentinel monitor mymaster 192.168.0.152 6380 2 # 指定多少毫秒之后 主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒 sentinel down-after-milliseconds mymaster 30000 # 主备切换时,多少个从服务器同步更新数据,数值越小越好 sentinel parallel-syncs mymaster 1 # 故障转移的超时时间 failover-timeout 可以用在以下这些方面: #1. 同一个sentinel对同一个master两次failover之间的间隔时间。 #2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。 #3.当想要取消一个正在进行的failover所需要的时间。 #4.当进行failover时,配置所有slaves指向新的master所需的最大时间。不过,即使过了这个超时,slaves依然会被正确配置为指向master,但是就不按parallel-syncs所配置的规则来了 # 默认三分钟 sentinel failover-timeout mymaster 180000
sentinel-26381.conf
# 配置 sentinel 端口号 port 26381 protected-mode no # 以守护进程启动,windows下可注释 # daemonize yes # 绑定只在本地使用 # bind 127.0.0.1 # 日志文件名称 # logfile "sentinel_26381.log" # 日志文件存放地址 # dir "./" # 监控 master 名字叫做 mymaster,地址是 127.0.0.1 端口号是 6379,1 表示有几个 sentinel 认为该 master 出现故障,触发主备切换动作 sentinel monitor mymaster 192.168.0.152 6380 2 # 指定多少毫秒之后 主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒 sentinel down-after-milliseconds mymaster 30000 # 主备切换时,多少个从服务器同步更新数据,数值越小越好 sentinel parallel-syncs mymaster 1 # 故障转移的超时时间 failover-timeout 可以用在以下这些方面: #1. 同一个sentinel对同一个master两次failover之间的间隔时间。 #2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。 #3.当想要取消一个正在进行的failover所需要的时间。 #4.当进行failover时,配置所有slaves指向新的master所需的最大时间。不过,即使过了这个超时,slaves依然会被正确配置为指向master,但是就不按parallel-syncs所配置的规则来了 # 默认三分钟 sentinel failover-timeout mymaster 180000
sentinel-26382.conf
# 配置 sentinel 端口号 port 26382 protected-mode no # 以守护进程启动,windows下可注释 # daemonize yes # 绑定只在本地使用 # bind 127.0.0.1 # 日志文件名称 # logfile "sentinel_26382.log" # 日志文件存放地址 # dir "./" # 监控 master 名字叫做 mymaster,地址是 127.0.0.1 端口号是 6379,1 表示有几个 sentinel 认为该 master 出现故障,触发主备切换动作 sentinel monitor mymaster 192.168.0.152 6380 2 # 指定多少毫秒之后 主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒 sentinel down-after-milliseconds mymaster 30000 # 主备切换时,多少个从服务器同步更新数据,数值越小越好 sentinel parallel-syncs mymaster 1 # 故障转移的超时时间 failover-timeout 可以用在以下这些方面: #1. 同一个sentinel对同一个master两次failover之间的间隔时间。 #2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。 #3.当想要取消一个正在进行的failover所需要的时间。 #4.当进行failover时,配置所有slaves指向新的master所需的最大时间。不过,即使过了这个超时,slaves依然会被正确配置为指向master,但是就不按parallel-syncs所配置的规则来了 # 默认三分钟 sentinel failover-timeout mymaster 180000
3.2 启动三个哨兵 命令和批处理方式
3.2.1 命令方式启动
redis-server.exe sentinel-26380.conf --sentinel
redis-server.exe sentinel-26381.conf --sentinel
redis-server.exe sentinel-26382.conf --sentinel
3.2.2 批处理方式启动
1.在G:\redis-Sentinel\Redis-6380、G:\redis-Sentinel\Redis-6381和G:\redis-Sentinel\Redis-6382目录下分别新建文件
startRedisSentinel-26380.bat 内容如下:
@echo off
redis-server.exe sentinel-26380.conf --sentinel
@pause
startRedisSentinel-26381.bat 内容如下:
@echo off
redis-server.exe sentinel-26381.conf --sentinel
@pause
startRedisSentinel-26382.bat 内容如下:
@echo off
redis-server.exe sentinel-26380.conf --sentinel
@pause
2.在和redis文件夹同级建三个cmd 启动文件,start6380sentinel.cmd,start6381sentinel.cmd,start6382sentinel.cmd
我的目录如下:
start6380sentinel.cmd
@echo off
cd Redis-6380
startRedisSentinel-26380.bat
start6381sentinel.cmd
@echo off
cd Redis-6381
startRedisSentinel-26381.bat
start6382sentinel.cmd
@echo off
cd Redis-6382
startRedisSentinel-26382.bat
3.启动后页面
收工;
四、测试
我就不写了,直接挂掉主节点,观察就可以啦!
参考: