1、主从的好处,可以分散redis压力,由原本的一个redis执行增删改查变为主执行增删改,从执行查
2、主从的坏处,如果主挂掉了,等同于从也挂了,再次启动主,从redis数据就会消失
3、哨兵的作用,监督主redis,如果主挂掉了,哨兵们会在从里选择一个新的redis作为主。同时保证数据不会丢失
首先配置主从
主不需要做任何操作,只需要配置从redis
从库操作:
1、如果在同一个服务器下,从库与主库的端口不可以相同,不同服务器就可以无视此问题
2、从库需要加的redis.windows.conf配置如下
# 定义要去哪里拉取数据(就是主库的IP+端口)
slaveof 127.0.0.1 6379
# 主库的密码(我没有试过无密码的。所以没有密码可能不需要加吧)
masterauth 121212
# 开启主从同步 ,如果是no就是阻塞主从同步
slave-serve-stale-data yes
然后启动两个redis,就会发现从redis自动开始拉取数据了
如何配置哨兵
参考这个博客,写的非常非常非常好,我就是参照这个博客配置的
(如果要做到主挂掉,从自动转主要把保护模式的注解开放。。我就是因为这个找了半天)
https://blog.csdn.net/weixin_38165486/article/details/92248373
// ----------------------------下面是我根据上方博客自己配置的,换汤不换药,建议看大佬的
1、在redis里创建一个文件,名字就叫sentinel.conf 与redis的配置文件同级即可。需要填写的内容如下:大佬的配置里面回车行都有一个空格,记得挨个去掉不然启动不起来
#禁止保护模式(如果注释掉,默认为yes,主挂了,无法将某个从变为主)
protected-mode no
#配置监听主服务器
#sentinel monitor 代表监控
#mymaster 代表服务器名称,可以自定义
#127.0.0.1 代表主服务器ip 建议写成网络IP而不是127.0.0.1
#6379 代表主服务器端口
#2 代表只有两个或两个以上的哨兵认为主服务器不可用时才会做故障切换操作
sentinel monitor mymaster 127.0.0.1 6379 2
#sentinel auth-pass 定义主服务器密码
#mymaster 代表服务器名称
#123456 服务器密码
sentinel auth-pass mymaster 123456
# 3s内mymaster无响应,则认为mymaster宕机了
sentinel down-after-milliseconds mymaster 3000
#指定在故障切换准许的毫秒数,当超过这个毫秒数的时候,就认为切换故障失败,默认三分钟
#sentinel failover-timeout mymaster 10000
# 执行故障转移时, 最多有几个从服务器同时对新的主服务器进行同步,一般而言,这个数字越小同步时间越长,而越大,则对网络资源要求比较高(我是设置的5)
#sentinel parallel-syncs mymaster 5
#指定哨兵(sentinel)检查该redis实例指向的实例异常时,调用报警脚本,
#sentinel notification-script mymaster <脚本路径>
#设定哨兵的端口
port 26379
2、主从redis各配置一个哨兵,如果有3个redis就配置3个哨兵
3、启动哨兵的快捷bat
创建一个bat,填写内容如下,双击即可启动
redis-server sentinel.conf --sentinel
4、开始启动各个redis,全部启动完成后启动各个哨兵
5、小小的测试一下
进入redis/bin
#执行:
redis-cli -h host -p port -a password
#host:远程redis服务器host
#port:远程redis服务端口
#password:远程redis服务密码(无密码的的话就不需要-a参数了)
然后执行一下 set aa bb 添加一个数据
然后去从库 get aa 看看能不能取到数据(从库只能查,不能增)
然后,我们关闭主redis查看是否实现哨兵投票,将某个从变为主