刚接触到Redis,首先对Redis有一个初步的了解。

  开源,免费,遵守BSD协议,key-value数据库。

  可以将内存中的数据保存在磁盘中,重启的时候可以再次加载使用。

  多种key-value类型的数据。

  主从模式的数据备份。

  高性能读写。

  redis所有操作都是原子性的,单个操作的原子性可以通过multi和exec指令包起来完成多个操作的原子性。

  一个key可以存储很大,可以达到1gb,不像memcached只能保存1mb的数据。

  主要缺点是数据库容量受物理内存的限制,不能作海量数据的高性能读写。

  主从同步,又叫主从复制,包括全量同步和增量同步。

  一.全量同步

  全量复制一般发生在slave(从服务器)初始化阶段,这时slava需要将master上所有的数据都复制一份,步骤如下:

  1.slave从服务器连接主服务器,并发送sync命令。

  2.主服务器接收到sync命令之后,开始执行bgsave命令(后台异步保存数据到磁盘并生成RDB文件)并使用缓冲区记录此后执行的所有写命令。

  3.主服务器完成bgsave后,向所有服务器发送快照文件(生成的RDB文件),并在发送期间继续记录被实行的写命令。

  4.从服务器接收到快照文件后,丢弃所有旧数据,载入收到的快照(RDB)。

  5.主服务器快照发送完毕后,开始向从服务器发送缓冲区中的写命令。

  6.从服务器完成对快照的载入,开始接收命令,并执行来自主服务器缓冲区的写命令。

  全量同步结束。

  

  二.增量同步

  Redis增量同步是指从服务器初始化后,正常工作时,master主服务器发生的写操作同步到slave从服务器的过程。主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令。

  增量同步完成。

  三.主从同步策略

  主从刚连接时,进行全量同步;全量同步结束后,进行增量同步。如果有需要,salve在任何时候都可以发起全量同步。redis总的策略时,首先会尝试增量同步,如果不成功,会进行全量同步。

Redis——主从同步原理的更多相关文章

  1. Redis主从同步原理-SYNC【转】

    和MySQL主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,下图为级 ...

  2. Redis主从同步原理-PSYNC【转】

    Reids复制数据主要有2种场景: 1. 从服务器从来第一次和当前主服务器连接,即初次复制 2. 从服务器断线后重新和之前连接的主服务器恢复连接,即断线后重复制   对于初次复制来说使用SYNC命令进 ...

  3. Redis主从同步分析(转)

    一.Redis主从同步原理 1.1 Redis主从同步的过程 配置好slave服务器连接的master后,slave会建立和master的连接,然后发送sync命令.无论是第一次同步建立的连接还是连接 ...

  4. 15.6,redis主从同步

    redis主从同步 原理:1. 从服务器向主服务器发送 SYNC 命令.2. 接到 SYNC 命令的主服务器会调用BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下来执行的所有写命令.3 ...

  5. Redis主从同步分析

    一.Redis主从同步原理1.1 Redis主从同步的过程配置好slave服务器连接的master后,slave会建立和master的连接,然后发送sync命令.无论是第一次同步建立的连接还是连接断开 ...

  6. Linux - redis主从同步

    目录 Linux - redis主从同步 环境准备 配置主从同步 测试写入数据,主库写入数据,检查从库数据 手动进行主从复制故障切换 Linux - redis主从同步 原理: 从服务器向主服务器发送 ...

  7. 04 Redis主从同步

    redis主从同步 原理:1. 从服务器向主服务器发送 SYNC 命令.2. 接到 SYNC 命令的主服务器会调用BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下来执行的所有写命令.3 ...

  8. redis 主从同步

    修改redis.conf配置文件 vi redis.conf 在编辑模式下 输入  /slaveof 来搜索 将slaveof启用 即 将#删除 依次配置所有 slave 并将进程 kill 掉 重启 ...

  9. redis主从同步故障切换及集群配置

    一.redis是一中高性能的缓存数据库, 原理:1. 从服务器向主服务器发送 SYNC 命令.2. 接到 SYNC 命令的主服务器会调用BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下 ...

随机推荐

  1. Django学习-19-缓存

    由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5 ...

  2. Nethogs - 网络流量监控工具

    命令iftop来检查带宽使用情况.netstat用来查看接口统计报告.还有其他的一些工具Bandwidthd.Speedometer.Nethogs.Darkstat.jnettop.ifstat.i ...

  3. Struts2入门这一篇就够了

    前言 这是Strtus的开山篇,主要是引入struts框架...为什么要引入struts,引入struts的好处是什么,以及对Struts2一个简单的入门.... 为什么要引入struts? 既然Se ...

  4. 对于多线程下Servlet以及Session的一些理解

    今天,小伙伴突然问到了Servlet是不是线程安全的问题.脑子当时一卡壳,只想到了单实例多线程.这里做一些总结. Servlet体系是建立在Java多线程的基础之上的,它的生命周期是由Tomcat来维 ...

  5. [BZOJ2761] [JLOI2011] 不重复数字 (set)

    Description 给出N个数,要求把其中重复的去掉,只保留第一次出现的数. 例如,给出的数为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复,去除后的结果为1 2 18 3 19 ...

  6. tar命令核心应用案列及多重参数和find组合应用

    tar zcvf 压缩包 文件 打包:尽量切换到打包目录的上级目录,然后用相对路径打包 tar zcvf [随意路径] /框 [相对路径]  一堆苹果 tar tf 查看内容 -z --gzip -- ...

  7. Zabbix JMX之tomcat监控

    工作原理: 1.JAVA-GATEWAY  Zabbix本身不支持直接监控Java,在zabbix 1.8以前,只能使用Zapcat来做代理监控,而且要修改源代码,非常麻烦.所有后来为了解决这个监控问 ...

  8. 封装好的MD5加密

    /** * 不可逆加密类 为密码提供不可逆的加密运算,使用MD5算法 * * 使用方法: MD5 encrypt = new MD5(); encrypt.getMD5ofStr(str); //返回 ...

  9. 11.python线程

    基本概念 1.进程       定义: 进程就是一个程序在一个数据集上的一次动态执行过程. 组成:  进程一般由程序.数据集.进程控制块三部分组成. 程序:  我们编写的程序用来描述进程要完成哪些功能 ...

  10. 29.Django session

    session 1.概述 cookie和session的区别 Cookie是保存在用户浏览器端的键值对,Session是保存在服务器端的键值对:Cookie做用户验证的时,敏感信息不适合放在Cooki ...