java redis 主从 哨兵_Redis主从复制与哨兵机制
Redis主从复制
1、redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。
2、通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作。
过程
1:当一个从数据库启动时,会向主数据库发送sync命令,
2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来
3:当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。
4:从数据库收到后,会载入快照文件并执行收到的缓存的命令。
图解如下:
什么是哨兵机制
Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务:
监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。
提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automaticfailover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master(通过选举投票机制), 并让失效Master的其他Slave改为复制新的Master; 当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master。
单个哨兵:
Master为Redis主服务器,slave为从服务器(redis只有一台主服务器,多台从服务器)。
思考:若redis服务器一个个都挂了?怎么处理?
答:重启(×)
redis服务器都宕机了,哨兵模式选举不了了,
应该是使用keepalived(重启脚本)监听,自动重启,若服务器宕机了自动重启,
若重启失败,则是邮件方式通知运维人员。
Redis高可用机制
keepalived+哨兵机制才是完善的Redis高可用机制。
注意:keepalived是重启脚本,不仅仅重启redis,包括其他软件应用
具体实现后续再整理一下
相关文章:

不同变量的区别
1、形参、局部变量以及局部静态变量的区别。 形参和局部变量均属于自动对象,当到达定义所在的块末尾时被销毁;而局部静态变量自定义开始,直到程序结束才被销毁。 2、全局变量和静态全局变量的区别。 全局变量本身就是静态存储方式,…

Java 使用 Redis
2019独角兽企业重金招聘Python工程师标准>>> 安装 开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java。 Java的安装配置可以参考我们的 Java开发环境配置 接下来让我们安装 Ja…

IPMSM弱磁控制策略
下面将详细介绍这种控制策略的实现过程:(l)具有快速动态响应的前馈弱磁控制策略电动汽车用永磁电动机驱动系统应具有较快的转速响应速度,而传统的的弱磁控制策略通常是先根据电机转速的变化调整交轴电流iq,而后根据转速给定值计算得出直轴电流id这种方法…

java 并发统计_java并发编程|CountDownLatch计数器
0x01,CountDownLatch介绍CountDownLatch是一个计数器,作为java并发编程中三个组件之一,这个组件的使用频率还是很多的。这里分享下自己画的java并发编程组件的图,后面一一介绍这几个组件的使用。上面图片标注的1,2,3分别是自己觉得重要性的&a…

MySQL查询随机数据的4种方法和性能对比
从MySQL随机选取数据也是我们最常用的一种发发,其最简单的办法就是使用”ORDER BY RAND()”,本文介绍了包括ORDER BY RAND()的4种获取随机数据的方法,并分析了各自的优缺点。下面从以下四种方案分析各自的优缺点。方案一: 复制代码 代码如下:…

【转】CPU位数、核数、个数
转自:http://blog.chinaunix.net/uid-20344928-id-2985712.html 32 or 64 linux下查看操作CPU的运行位数: getconf LONG_BIT 如结果是32,表示当前CPU工作在32位模式下(即操作系统是32位的),但并不表示CPU一…

JPA常用注解
2019独角兽企业重金招聘Python工程师标准>>> JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 JPA由EJB 3.0软件专家组开发,作为JSR-220实现的一…

php pthread 实例,php 真正的多线程 pthread
对于php,有很多种多进程的实现,这里就不说了,下面介绍一种多线程的方式。php真正的多线程实现方式,通过安装php的扩展:pthread 扩展安装步骤如下:1.下载地址是这个:但是这个下载的是 版本3 也就…

Java基础学习总结(1)——equals方法
2019独角兽企业重金招聘Python工程师标准>>> 一、equals方法介绍 1.1.通过下面的例子掌握equals的用法 1 package cn.galc.test;2 3 public class TestEquals {4 public static void main(String[] args) {5 /**6 * 这里使用构造方法Cat()在堆…

动态规划:求最大公共子串
1 /// <summary>2 /// 动态规划:求最大公共子串3 /// LCS (Longest Common Subsequence)4 /// </summary>5 private static string LCS(string str1, string str2)6 { 7 var d …

java 不可最小化,java – 这是最小化绑定失效的有效方法吗?
我有一些复杂的Observable结构,这可能是也可能不是坏主意,但这不是这个问题的焦点.这些结构的问题在于它们会产生很多UI显示的Observable对象的失效.就像我所知道的那样,当JavaFX UI显示某些内容时,它在其上注册了ChangeListener,因此任何使用延迟评估的尝试都会消失.也就是说,…

让你的javascript函数拥有记忆功能,降低全局变量的使用
考虑例如以下场景:假如我们须要在界面上画一个圆,初始的时候界面是空白的。当鼠标移动的时候,圆须要尾随鼠标移动。鼠标的当前位置就是圆心。我们的实现方案是:假设界面上还没有画圆,那么就新创建一个;假设…

Maven学习总结(6)——Maven与Eclipse整合
2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(六)——Maven与Eclipse整合 一、安装Maven插件 下载下来的maven插件如下图所示:,插件存放的路径是:E:/MavenProject/Maven2EclipsePlugin 进入到eclipse中的dropins目录…

为python安装numpy和scipy(federo)
为了进行数值计算,例如积分等等,需要安装numpy和scipy,其中scipy是依赖于numpy的,所以先要装numpy. 1, 通过下载http://pypi.python.org/pypi/numpy,然后python set.up install安装,不过有些行不…

php执行mysql insert,当执行mysql insert 时插入两条是咋回事
当执行mysql insert 时插入两条是怎么回事?本帖最后由 Eason_____________ 于 2013-07-25 11:25:44 编辑//做了一个手机上传图片到服务器的功能。但是获取到执行insert语句时都要执行两次!//index.phpheader("Content-Type: text/html; charsetUTF-…

产品经理要读什么书?怎么读?
产品相关知识可以在:http://www.aipingce.com/进行学习,本文转自:http://www.aipingce.com/article-22960-1.html 首先,我个人还是非常推荐大家看实体书的,原因如下,算是做个分析吧: 电子书是免…

HTML5:理解head
2019独角兽企业重金招聘Python工程师标准>>> HTML文档的head部分,通常包括指定页面标题,为搜索引擎提供关于页面本身的信息,加载样式表,以及加载JavaScript文件(出于性能考虑,多数时候放在页面底…

php定时任务为什么不好写,php解决crontab定时任务不能写入文件问题的方法分析...
本文实例讲述了php解决crontab定时任务不能写入文件问题的方法。分享给大家供大家参考,具体如下:今天使用crontab写的定时任务没有执行,很纳闷。crontab.phperror_reporting(0);$time date("Y-m-d h:i:s",time());file_put_conten…

SpringMVC权限管理
2019独角兽企业重金招聘Python工程师标准>>> 1.DispatcherServlet SpringMVC具有统一的入口DispatcherServlet,所有的请求都通过DispatcherServlet。 DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servl…

搭建Hadoop集群步骤
——基于三台机器 一、前提 1、 首先要有三台已联网机器,假设为A,B1,B2。其中A:192.168.81.91;B1:192.168.81.92;B2:192.168.81.93。机器装有Ubuntu10.04服务器版64位操作系统。 2、 对三台机器做相同的处…

使用DCloud+Framework7制作移动APP应用(一)
http://my.oschina.net/kenblog/blog/516201转载于:https://www.cnblogs.com/NodeStudy/p/5223273.html

nsq php,Nsq从入门到实践
当nsq跑起来之后, 我们可能会遇到以下问题分布式部署处理错误(何时requeue)如何使用golang lib抱着不应该只停留在入门的态度, 笔者粗浅的研究了一下这几个问题, 希望也对有同样疑问的人有帮助.部署由于NSQ的分布式网络结构, NSQD必须广播(到lookup)自己的地址并让消费者连接, …

Java单元测试之JUnit4详解
2019独角兽企业重金招聘Python工程师标准>>> Java单元测试之JUnit4详解 与JUnit3不同,JUnit4通过注解的方式来识别测试方法。目前支持的主要注解有: BeforeClass 全局只会执行一次,而且是第一个运行Before 在测试方法运行之前运行…

Java 学习笔记 ------第二章 从JDK到IDE
本章学习目标: 了解与设定PATH了解与指定CLASSPATH了解与指定SOURCEPATH使用package与import管理类别初步认识JDK与IDE的对应关系一、第一个Java程序 工具:使用Windows自带记事本或下载其他编辑器(推荐NotePad和Sublime) //第一个…

Delphi中的容器类(二)
TStrings类 出于效率的考虑,Delphi并没有象C和Java那样将字符串定义为类,因此TList本身不能直接存储字符串,而字符串列表又是使用非常广泛的,为此Borland提供了TStrings类作为存储字符串的基类,应该说是它除了TList…

Java怎么把数组怎么放入set,如何将数组转换为Java中的Set
回答(16)2 years ago我从上面的建议中写下了以下内容 - 偷了它......真好!/*** Handy conversion to set*/public class SetUtil {/*** Convert some items to a set* param items items* param works on any type* return a hash set of the input items*/public s…

vue组件定义、组件的切换、组件的通信、渲染组件的几种方式(标签、路由、render)...
vue中全局的概念是什么?---就是全局定义的功能,所有实例化的vm都可以使用, 全局定义的是挂在构造函数Vue上面的,所以实例化出的对象都可以使用这个功能 1、什么是组件?---从UI的角度把页面拆分成不同的部分࿰…

JS九九乘法表
来一个老生常谈的话题--九九乘法表,哈哈,好久不写了呢 <!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title></title><style>th{border: #ccc 1px solid;font-weight: n…

Php Fatal error: Allowed memory size of 33554432 bytes exhausted 的解决办法
Php Fatal error: Allowed memory size of 33554432 bytes exhausted 的解决办法 在 php.ini 配置文档里面,默认的memory_limit 属性值为32M ,值设置得太小了而导致这个问题的出现。 解决这个问题,我们一般有三种方式: 1、修改PHP…

php 自加 性能,对于数据库的自增、自减心得
系统研发过程中会有很多地方涉及到自增、自减操作 如:加入版块时,用户版块数自增1,版块用户数自增1;退出版块时,用户版块数要减1,版块用户数也要减1这里推荐:1.自增可以用2.自减不要用ÿ…