本文简单讲述主从建立和哨兵的配置。本机测试redis为Redis-x64-3.2.100Windows下载地址,使用二台服务器作为测试。
下载解压
下载完成后进行解压,然后复制两份作为从成员,构成一主二从。在主服务器上使用一份,从服务器上使用二份。
主从配置
主redis配置
编辑文件夹下redis.windows.conf文件,设置bind和port,因为要用到远程连接,所以绑定的ip 127.0.0.1要注释掉,否则远程是无法访问的。端口就使用默认的6379,注意要把阿里云后台的端口限制防火墙打开。
从redis配置
从redis配置:同样编辑文件夹下redis.windows.conf文件,设置bind和port。bind127.0.0.1同样注释掉,port分别是6380和6381。做完以上操作,如何标志这两redis是从关系呢?所以,还需要在配置文件中加上一行配置。注意:两个从redis都是相同的配置语句,因为都从属于同一个主redis。
由于我开启了密码登录验证,所以masterauth要添加上。
主从启动
在文件加中使用cmd进入命令窗口,输入redis-server redis.windows.conf即可启动(redis-server.exe和redis.windows.conf文件在相同文件夹下),依次启动主和从redis。
1 | redis-server redis.windows.conf |
通过命令查看各个redis的状态
slave 6380
slave 6381
当搭建好后主服务器是可读可写的,而从服务器是只读的。当主服务器宕机后,整个系统就瘫痪了,不能往从服务器写入数据,不能自动的把从服务器上升为主服务器。此时可通过哨兵模式来实现当主服务器宕机后,从服务器自动上升为主服务器。
哨兵模式配置
新建哨兵配置文件,分别命名为
1 | sentinel.conf |
哨兵配置文件内容
sentinel.conf
1 | port 27000 |
sentinel2.conf
1 | port 27002 |
sentinel3.conf
1 | port 27001 |
这里需要注意的是如果redis配置种添加了密码验证,一定要在sentinel文件里添加auth-pass这个参数,不然在从机上升为主机后,其他服务器连接不了。
哨兵配置文件说明
1 | 1. port :当前Sentinel服务运行的端口 |
哨兵测试
启动3个哨兵
1 | redis-server.exe sentinel.conf --sentinel |
测试主从切换
主机挂了后,从机是否能成功上位变为主机
先看下当前的redis状态
分别在客户端输入
1 | info replication |
当主机挂掉后,6381这个端口成了主机,这是通过哨兵的一个投票选择选出一个从机上升为主机。如果主机下次重新连接进来,那么它也不会立即成为主机,而是变为了从机。
.NET Core中使用Redis集群
我们使用CSRedisCore来访问Redis,CSRedisCore是国内大牛开发的一个.net core redis 组件,源码可读性很强非常干净,几乎无任何依赖。性能相比ServiceStack.Redis和StackExchange.Redis会快10%左右,支持Redis的高级特性:订阅/发布,Pipeline,MGet/MSet,集群,分区。
创建一个.net core 控制台程序,然后添加nuget包
1 | nuget Install-Package CSRedisCore |
Program.cs代码
1 | using System; |
模拟故障进行测试,启动程序后,杀死主Redis进程,.net core程序再次访问Redis会出现一次异常检查,然后能正常切换到新的master上。
本文链接: https://linbei.top/Redis%E4%B8%80%E4%B8%BB%E4%BA%8C%E4%BB%8E%E4%B8%89%E5%93%A8%E5%85%B5/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!