首先我们配置一台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。

转载于:https://www.cnblogs.com/zxtceq/p/7890944.html

Redis——学习之路四(初识主从配置)相关推荐

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

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

  2. Redis学习之路(一)--下载安装redis

    redis学习之路--下载安装redis windows安装redis 1.下载redis 2.安装 3.查看是否安装成功 windows安装redis 1.下载redis 网址:https://gi ...

  3. Java多线程学习之路(四)---死锁(DeadLock)

    Java多线程学习之路(四)-死锁(DeadLock) 1.定义 死锁就是多个线程在竞争共享资源的时候,相互阻塞,不能脱身的状态(个人理解).其实死锁一定程度上可以看成一个死循环. 举个现实生活中的例 ...

  4. typescript学习之路(四) —— ts类的继承(包含es5以及es6的类继承)

    上一文已经写了es5,es6等类的定义,所以本章主要写es5和es6的继承,由于es6的继承和ts的继承如出一辙,只是加了类型定义而已,所以ts的继承稍微写下,不会太详细. 文章目录 es5继承 原型 ...

  5. Redis学习(一)之 持久化、主从与哨兵架构

    jiaruredis持久化 RDB快照:在默认情况下, Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中. 你可以对 Redis 进行设置, 让它在" N 秒内数据 ...

  6. 前端Vue学习之路(一)-初识Vue

    Vue学习之路 (一) 1.引言 2.更换npm国内镜像源 3.用npm下载Vue 4.Vue全家桶 5.使用命令创建项目 5.推荐插件 6.推荐网站 7.学习扩展 1.引言 先安装node.js环境 ...

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

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

  8. 【Spring学习05】四种xml配置注入方式

    本文博客地址:http://blog.csdn.net/soonfly/article/details/68507615 (转载请注明出处) 平常应用Spring开发中,用得最多的是容器.spring ...

  9. Flask学习之路(一)--初识flask

    0.Flask简介 Flask是python三大框架之一, Flask流行的原因,可以分为以下几点: 微框架,简洁,只做他需要做的,给开发者提供了很大的扩展性 Flask和相应的插件写得很好,用起来很 ...

最新文章

  1. 时间序列数据库选型——本质是列存储,B-tree索引,抑或是搜索引擎中的倒排索引...
  2. 使用Filezilla Server配置FTP服务器
  3. mybatis 分页需要的jar包下载_牛逼哄哄的PageHelper分页插件到底牛在哪里?
  4. 后处理没有pui文件怎么打开_UG后处理添加具体步骤
  5. ValueError: No engine for filetype: 'csv'解决与书本7-2代码改写
  6. C语言中的格式化打印printf/sprintf以及嵌入式printf重定向进行DEBUG
  7. 绕过图片防盗链的方法
  8. LeetCode 题 - 9 回文数
  9. 赛锐信息:SAP之工厂设置
  10. php curlopen,php自动提交表单的方法(基于fsockopen与curl)
  11. .net上传大文件不成功
  12. 初识ProtoBuf(3.18.1)
  13. 【NLP】10其它词、句向量生成方法——腾讯AI实验室汉字词句嵌入语料库与gensim Doc2Vec
  14. VMware ESXi安装mac os
  15. IReport+JasperReport系列的坑(二)CloumnFooter与Detail之间有缝隙
  16. 找不到msvcr100.dll怎么办?三种方法教你
  17. NLP 语义匹配:经典前沿方案整理
  18. 在SOLIDWORKS中如何建立基准面
  19. 一篇文章带你全面了解“电脑”内外组成
  20. selenium PhantomJS Fiddler使用

热门文章

  1. 通过正则表达式校验手机号码,拿走即用!
  2. Redis 笔记(02)— keys 键相关命令(查询数据库key数量、判断key是否存在、指定key过期时间、查看key类型、查看key剩余秒数、选择数据库、删除key、删除数据库)
  3. 数组的拼接合并 numpy
  4. 内存接口芯片,服务器平台,PCIe 芯片
  5. MindSpore循环神经网络
  6. Paddle预训练模型应用工具PaddleHub
  7. 个性化排序的神经协同过滤
  8. ajax交互扩展遇到的问题,ajax autocomplete扩展程序无法正常工作
  9. Ubuntu系统执行shell 脚本的方法
  10. android测量的三种模式