Redis系列之Redis主从复制(二)
2016-11-27 14:23
1111 查看
Redis主从服务器是项目中经常用到的,主从服务器之间的数据是怎么实现主从复制的呢,下面以一个实例说明一下
1、首页通过命令行的方式启动3个redis实例
上面启动实例时,分别指定了端口号10000,10001,10002,daemonize yes表示以守护进程的方式启动,slave-read-only no表示关闭slave只读方式,否则在Master上增加值的时候,会报如下错误
2、打开三个终端,启动客户端连接创建好的三个实例
3、指定端口号为10000的为master,因此需要在端口号为10001/10002的实例上执行如下命令设置主从关系,设置完成后会返回OK
到这里主从关系就设置好了,接下来我们验证一下,先在三个实例上执行如下命令
发现foo到三个实例中都没有存在,接下来在Master上增加foo,分别在两个slave查看foo结果
到这里主从复制就已经实现了,是不是很简单呀,下面大概介绍一下原理
master 接到指令后,开始启动后台保存进程保存数据,接着收集所有的数据修改指令。后台保存完了,master 就把这份数据发送给 slave,slave 先把数据保存到磁盘,然后把它加载到内存中,master 接着就把收集的数据修改指令一行一行的发给 slave,slave 接收到之后重新执行该指令,这样就实现了数据同步。
slave 在与 master 失去联系后,自动的重新连接。如果 master 收到了多个 slave 的同步请求,它会执行单个后台保存来为所有的 slave 服务,这里只是说明了主从服务的数据复制,但是Redis的集群是怎么实现的呢,请看下一遍系列文章《Redis系列之Redis集群(三)》
1、首页通过命令行的方式启动3个redis实例
longwentaodeMacBook-Pro:redis-3.2.5 longwentao$ src/redis-server --port 10000 --daemonize yes longwentaodeMacBook-Pro:redis-3.2.5 longwentao$ src/redis-server --port 10001 --daemonize yes --slave-read-only no longwentaodeMacBook-Pro:redis-3.2.5 longwentao$ src/redis-server --port 10002 --daemonize yes --slave-read-only no longwentaodeMacBook-Pro:redis-3.2.5 longwentao$
上面启动实例时,分别指定了端口号10000,10001,10002,daemonize yes表示以守护进程的方式启动,slave-read-only no表示关闭slave只读方式,否则在Master上增加值的时候,会报如下错误
127.0.0.1:10001> set foo value 127.0.0.1:10001> You can't write against a read only slave
2、打开三个终端,启动客户端连接创建好的三个实例
longwentaodeMacBook-Pro:redis-3.2.5 longwentao$ src/redis-cli -p 10000 longwentaodeMacBook-Pro:redis-3.2.5 longwentao$ src/redis-cli -p 10001 longwentaodeMacBook-Pro:redis-3.2.5 longwentao$ src/redis-cli -p 10002
3、指定端口号为10000的为master,因此需要在端口号为10001/10002的实例上执行如下命令设置主从关系,设置完成后会返回OK
127.0.0.1:10001> SLAVEOF 127.0.0.1 10000 OK 127.0.0.1:10001>
127.0.0.1:10002> SLAVEOF 127.0.0.1 10000 OK 127.0.0.1:10002>
到这里主从关系就设置好了,接下来我们验证一下,先在三个实例上执行如下命令
127.0.0.1:10000> get foo (nil) 127.0.0.1:10000>
127.0.0.1:10001> get foo (nil) 127.0.0.1:10001>
127.0.0.1:10002> get foo (nil) 127.0.0.1:10002>
发现foo到三个实例中都没有存在,接下来在Master上增加foo,分别在两个slave查看foo结果
127.0.0.1:10000> set foo value OK 127.0.0.1:10000>
127.0.0.1:10001> get foo "value" 127.0.0.1:10001>
127.0.0.1:10002> get foo "value" 127.0.0.1:10002>
到这里主从复制就已经实现了,是不是很简单呀,下面大概介绍一下原理
master 接到指令后,开始启动后台保存进程保存数据,接着收集所有的数据修改指令。后台保存完了,master 就把这份数据发送给 slave,slave 先把数据保存到磁盘,然后把它加载到内存中,master 接着就把收集的数据修改指令一行一行的发给 slave,slave 接收到之后重新执行该指令,这样就实现了数据同步。
slave 在与 master 失去联系后,自动的重新连接。如果 master 收到了多个 slave 的同步请求,它会执行单个后台保存来为所有的 slave 服务,这里只是说明了主从服务的数据复制,但是Redis的集群是怎么实现的呢,请看下一遍系列文章《Redis系列之Redis集群(三)》
相关文章推荐
- Redis系列-主从复制配置
- Redis系列-主从复制配置
- 【Redis系列】Redis主从复制
- redis学习系列(五)--redis主从复制原理、断点续传、无磁盘化复制、过期key处理
- redis系列--主从复制以及redis复制演进
- Redis主从复制和集群配置系列之五
- Redis 笔记系列(十二)——Redis的主从复制、读写分离
- 缓存系列之四:redis持久化与redis主从复制
- redis系列-主从复制
- Redis主从复制和集群配置系列之六(redis集群节点新增、删除、重新分配slot实战)
- Redis 讲解系列之 Redis的主从复制(一)
- Redis 讲解系列之 Redis的主从复制(二)
- redis系列:主从复制
- redis系列之主从复制原理
- 集群与负载均衡系列(8)——redis主从复制+哨兵实现高可用性架构
- Redis系列~主从复制(十八)
- redis系列-主从复制
- 面试宝典系列-读《深入学习Redis(3):主从复制》概要
- Redis系列-主从复制配置
- Redis系列八:redis主从复制和哨兵