首页 / REDIS / Redis的主从复制原理
Redis的主从复制原理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Redis的主从复制原理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2365字,纯文字阅读大概需要4分钟。
内容图文
![Redis的主从复制原理](/upload/InfoBanner/zyjiaocheng/862/dce01d9623b54d8e8d24065fe1a35b68.jpg)
一、什么是Redis
个人理解:是个数据库,key-value型的,可以做内存,也可以持久化,重点是性能极高。
用途很多,常用的有数据缓存、会话session存储。
经常听说的牛逼之处就有Redis主从复制。
二、主从复制
1、什么是主从复制
答:数据的备份,平时主要用主的机,当主机出现问题时,从机可以恢复数据或者作为主机(皇帝驾崩,太子即位)继续提供服务。
说明:
-
主 redis 中的数据有两个副本(replication)即从 redis1 和从 redis2,即使一台 redis 服务器宕机其它两台 redis 服务也可以继续提供服务。
-
主 redis 中的数据和从 redis 上的数据保持实时同步,当主 redis 写入数据时通过主从复制机制会复制到两个从 redis 服务上。
-
只有一个主 redis,可以有多个从 redis。
-
主从复制不会阻塞 master,在同步数据时,master 可以继续处理 client 请求。
-
一个 redis 可以即是主又是从,如下图:
2、主从配置:
1、主 redis 配置
无需特殊配置。
2、从redis配置
修改从 redis 服务器上的 redis.conf 文件,添加 slaveof 主 redisip 主 redis 端口。
上边的配置说明当前该从 redis 服务器所对应的主 redis 是192.168.101.3,端口是6379。
3、主从复制过程
1、完整复制过程
在 redis2.8 版本之前主从复制过程如下图:
复制过程说明:
-
slave 服务启动,slave 会建立和 master 的连接,发送 sync 命令。
-
master 启动一个后台进程将数据库快照保存到 RDB 文件中
注意:此时如果生成 RDB 文件过程中存在写数据操作会导致 RDB 文件和当前主 redis 数据不一致,所以此时 master 主进程会开始收集写命令并缓存起来。
-
master 就发送 RDB 文件给 slave
-
slave 将文件保存到磁盘上,然后加载到内存恢复
-
master 把缓存的命令转发给 slave
注意:后续 master 收到的写命令都会通过开始建立的连接发送给 slave。
当 master 和 slave 的连接断开时 slave 可以自动重新建立连接。如果 master 同时收到多个 slave 发来的同步连接命令,只会启动一个进程来写数据库镜像,然后发送给所有 slave。
完整复制的问题:
在 redis2.8 之前从 redis 每次同步都会从主 redis 中复制全部的数据,如果从 redis 是新创建的从主 redis 中复制全部的数据这是没有问题的,但是,如果当从 redis 停止运行,再启动时可能只有少部分数据和主 redis 不同步,此时启动 redis 仍然会从主 redis 复制全部数据,这样的性能肯定没有只复制那一小部分不同步的数据高。
2、部分复制
部分复制说明:
从机连接主机后,会主动发起 PSYNC 命令,从机会提供 master 的 runid(机器标识,随机生成的一个串) 和 offset(数据偏移量,如果offset主从不一致则说明数据不同步),主机验证 runid 和 offset 是否有效,runid 相当于主机身份验证码,用来验证从机上一次连接的主机,如果 runid 验证未通过则,则进行全同步,如果验证通过则说明曾经同步过,根据 offset 同步部分数据。
内容总结
以上是互联网集市为您收集整理的Redis的主从复制原理全部内容,希望文章能够帮你解决Redis的主从复制原理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。