首先我们配置一台master服务器,两台slave服务器。master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器。

两台slave服务器配置如下:
    1.先找到配置redis.windows-service.config文件修改port 6379 为port 6380
    2.然后配置master服务器地址:slaveof 127.0.0.1 6379,然后主服务有密码还需要配置密码 masterauth CeshiPassword(本人有密码)
    3.启动从服务器的加上这个配置文件 redis-server redis.windows-service.config
    4.然后在主服务器基本信息(info),可以看到如图,说明主从配置成功
    5.另一台slave服务器port修改为6381 其它配置一样

下面我来简单的验证一下

  先连接master服务在服务器上set一个 name "hello world",然后连接其中一台slave服务器get一下。

 
    这是master服务器的结果。
    这是slave服务器的结果。
    我们看到slave有同步到master服务器set name的值,但是下面当我们想给slave服务器set时报错,这个是为了数据库同步才这样设置的。就是让用户不会误操作,导致数据库的不一致。当然这个设置在.conf里面的slave-read-only yes 这个我们上一章介绍过。
    这样我们就完成就redis的主从配置,如果你还想要添加slave服务器就只需要按上面的步骤修改为不同的端口即可。下面我们来说明一下一个很严重的问题,如果某天出现master服务器宕机了那怎么办?master服务器宕机了,我们可以实际操作一下,会出现上面样的情况。
  我们来关闭master服务器 ,然后去slave服务器获取name 的值 发现依然可以正常获取。有一个问题现在我们虽然可以正常获取但是已经没有set的服务器了,就是说我们的服务器只能get不可以set。我们再查看slave服务info
  可以看到maste_link_status状态是down,正常连接状态为up。如果遇到这么的情况我们应该怎么去处理呢?
  我们是不是应该讲现在可以正常工作的两台slave服务选取一台变为master服务器好让redis正常工作。
下面提供两种方法:
    1.手动切换(slave到master)
        首先这里选择6380服务器输入命令slaveof no one,意思就是告诉这台slave服务器已经没有master服务器了,你会成为master服务器。
  我们在这台服务器上输入info 查看 发现这台服务变成了master
   接着我们要做的是将6381这台slave服务器指向6380这台master
  这样我们就手动完成了master宕机到选择一台slave服务器为master服务器。有人一定会说让维护人员自己手动操作这不是耽误事情嘛,确实是这样如果mster需要我们手动去操作那用户早就跑光了。
    2.自动切换(sentinel哨兵)
    这是在redis2.4以后版本,redis作者antirez考虑到社区的需求写的一个自动维护工具名字叫redis-sentinel。在redis2.8与redis3.0时将sentinel2集成到了redis-server中,在redis2.8以前的版本可能你还是需要自己去下载源代码编译生成redis-sentinel然后使用。这里就不讲了,我们只说redis2.8这个版本的。首先我们需要去官方下载redis2.8对应版本的sentinel.conf,不要下载redis3.0,我就下载过,启动时报参数错误(如图下图)。
下载完成后我们先来看看sentinel有哪些我们去简单配置就能完成我们的业务需求的。
第一个参数是主服务器的名称,然后是IP地址,端口号,以及需要几个sentinel选举,我们只运行了一个sentinel做简单选举。
sentinel monitor <master-name> <ip> <redis-port> <quorum> 
sentinel monitor mymaster 127.0.0.1 6379 1 
 
配置监控连接的密码,参数一:主服务器的名称,参数二:密码
sentinel auth-pass <master-name> <password> 
sentinel auth-pass mymaster CeshiPassword
 
指定了Sentinel认为Redis实例已经失效所需的毫秒数,这里使用默认值30秒
sentinel down-after-milliseconds <master-name> <milliseconds> 
sentinel down-after-milliseconds mymaster 30000 
同时我们需要为slave服务器配置一下优先级,即当master宕机时谁被选定为新的master的优先级。我给6381端口的服务器设置了 slave-priority 1 slave优先级最高,给6380端口的服务设置了默认值100。也就是说当6379宕机时6380会被sentinel选举为master。现在我们先启动这个三台redis服务器,然后启动我们的sentinel服务输入命令 redis-server sentinel.conf --sentinel
上图可以看到sentinel监控了 127.0.0.1 6379 同时发现了 两台salve服务器 127.0.0.1 6380 与127.0.0.6381
现在我们来关闭master这台服务器。
然后发现sentinel监控到了,通知他选举6380这个slave为master了。
然后当我们重启127.0.0.1 6379 服务器时,发现它居然自动加入了到原来的集群中,自动成6381的slave服务器。
但是当我们查看info信息时发现只有一台slave服务
再查看6379服务的状态,连接状态是down
为什么呢?指定服务地址端口正确,对那就是密码不正确,查看配置信息果然我们重启的6379服务没有设置访问6381的密码。

设置密码 config set masterauth CeshiPassword ,查看6381slave服务信息 ok
查看6379信息,如下图连接状态为up了

下一章将学习一下C#客户端如果调用redis。

以上是自己个人学习的记录,都是很简单的处理,初级的知识,如果有什么不对的地方请大家指正,欢迎评论!

Redis——学习之路四(初识主从配置)的更多相关文章

  1. Redis——学习之路三(初识redis config配置)

    我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息.     ...

  2. Redis——学习之路二(初识redis服务器命令)

    上一章我们已经知道了如果启动redis服务器,现在我们来学习一下,以及如何用客户端连接服务器.接下来我们来学习一下查看操作服务器的命令. 服务器命令: 1.info——当前redis服务器信息   s ...

  3. Redis学习之路(000)- 目录

    本文是博主学习整理网上大神的文件以及自学的心得. Redis学习之路(000)- 目录 Redis学习之路(001)- Redis介绍以及安装(Linux) Redis学习之路(002)- Ubunt ...

  4. Redis学习之路(三)之Redis主从和哨兵模式

    目录 一.Redis主从配置 1.环境说明 2.修改主从的redis配置文件 3.启动主从redis 3.数据同步验证 二.Redis哨兵模式 1.Redis sentinel介绍 2.Redis S ...

  5. 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  6. MongoDB(四)-- 主从配置

    一.前言 虽然MongoDB官方已经不建议使用主从模式了,但是 熟悉下 也是有用的,替代方案是采用副本集的模式.slave默认情况下是不支持读写的,但是master会把数据同步到slave,不支持客户 ...

  7. webpack学习(二)初识打包配置

    前言:webpack打包工具让整个项目的不同文件夹相互关联,遵循我们想要的规则.想 .vue文件, .scss文件浏览器并不认识,因此webpage暗中做了很多转译,编译等工作. 事实上,如果我们在没 ...

  8. Redis——学习之路一(初识redis)

    在接下来的一段时间里面我要将自己学习的redis整理一遍,下面是我整理的一些资料: Redis是一款依据BSD开源协议发行的高性能Key-Value存储系统(cache and store),所以re ...

  9. Redis学习之路(四)之Redis集群

    [toc] #Redis集群 1.Redis Cluster简介 Redis Cluster为Redis官方提供的一种分布式集群解决方案.它支持在线节点增加和减少. 集群中的节点角色可能是主,也可能是 ...

随机推荐

  1. Linux系统启动过程

    1. 从BIOS到KERNEL BIOS自检->MBR(GRUB)->KERNEL->KERNEL自解压->内核初始化->内核启动 BIOS自检 当电脑开机的时候,电脑会 ...

  2. 《深入理解Java虚拟机》学习笔记1-内存数据区域

         1.程序计数器 作用-较小的内存空间,用于存储当前线程所执行的字节码的行号 特性-每条线程有需要一个独立的程序计数器,各线程间互不影响,独立存储,称为"线程私有"的内存 ...

  3. Id.value与document.getElementById("Id").value的区别

    如果标签Id在Form表单里面的话,直接Id.value就不能用了,而是要用Form.Id.value来取值或设置值 所以最好用document.getElementById("Id&quo ...

  4. PHP 站点相对包含,路径的问题解决方法(include,require)

    以前看了,很多框架,基本上很少使用相对路径包含.而一般很多做php web站点,喜欢用相对路径. 认为这样,无论目录放到那里. 只要跟另外目录关系一致.那么就不会出现问题.如果一个站点,一般都认为,如 ...

  5. input事件与change事件

    输入框的change事件: 必须等到输入框失去焦点的时候才会触发,鼠标在空白的地方点一下: 输入框的input事件: 在输入内容变化的同时,实时的触发,不需要等到失去焦点.

  6. Code::Blocks如何支持C++11特性

    为了给同事分享C++11标准,需要一个演示C++11的编程环境.VS2013太大,安装起来不太方便.由于电脑上之前有安装codeblock,于是升级MinGW.去MinGW官网http://www.m ...

  7. DCIntrospect -iOS界面调试

    原文:http://www.cnblogs.com/kw-ios/p/3523525.html 有时,设计稿上的UI很漂亮,布局也整齐,但自己用代码写出来的就不行,不是这里高一点,就是那是低一点,使用 ...

  8. opengl es中不同的绘制方式

    opengl es中不同的绘制方式 转载请保留出处:http://xiaxveliang.blog.163.com/blog/static/297080342013467344263/ 1. GL_P ...

  9. URAL 1827 Indigenous Wars(排序、乱搞)

    题意:给一个长度为n数组{a[i]}.有m个操作Ti,Si,Li表示找以Ti值结束,以Si值开始,长度为Li的连续子串.找到后,将区间的答案值设为1.一开始答案值全部为0.最后输出n个答案值. 好久没 ...

  10. 纯html页面之间传参

    //页面引入//传参方法,可解析url参数 (function($){ $.getUrlParam = function(name) { var reg = new RegExp("(^|& ...