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集群(三)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值