Redis 主从复制

来源:互联网 发布:fx编程手册下载 编辑:程序博客网 时间:2024/05/17 22:41

一.redis主从复制特点:
1.master(主)可以拥有多个slave(从)
2.多个slave可以连接同一个master外,还可以连接到其他slave
3.主从复制不会阻塞master,在同步数据时,master可以继续处理client请求
4.提高系统的伸缩性
5.可以在master禁用数据持久化,注释掉master配置文件中的所有save配置,只需在slave上配置数据持久化

#当有一条Keys数据被改变是,900秒刷新到disk一次#save 900 1#当有10条Keys数据被改变时,300秒刷新到disk一次#save 300 10#当有1w条keys数据被改变时,60秒刷新到disk一次#save 60 10000

二.redis主从复制过程:
当配置好slave后,slave与master建立连接,然后发送sync命令。无论是第一次连接还是重新连接,master都会启动一个后台进程,将 数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存。后台进程完成写文件后,master就发送文件给slave,slave将 文件保存到硬盘上,再加载到内存中,接着master就会把缓存的命令转发给slave,后续master将收到的写命令发送给slave。如果 master同时收到多个slave发来的同步连接命令,master只会启动一个进程来写数据库镜像,然后发送给所有的slave。

三.配置

Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级 服务器集群架构。下面我演示下怎样在多台服务器上进行Redis数据主从复制。这里我假设有两台服务器,一台是Linux操作系统(局域网 IP:192.168.3.159),一台是Linux操作系统(局域网IP:192.168.3.169),在两个操作系统都安装 redis,安装过程参见http://blog.csdn.net/ajun_studio/article/details/6698147有详细的介绍。

此时我们要到用到linux ,这里我们采用centOs5.4 ,redis采用redis-2.0.4。

这里我使用1个master以及1个slave(master在一个Linux下,一个slave在一个Linux下,基本流程是

client -----whrite----->>>【Linux(master 192.168.3159:6379)】<<<--------------------slave----【Linux (slave 192.168.3.169:6381)】<<<<------read---------client

1.在master上修改redis.conf

 bind 192.168.3.159
2.在slave上修改起redis.conf

port 6381(服务端口号要分开)bind 192.168.3.169slaveof 192.168.3.159 6379 (设置master的Host以及Port)

3.启动服务

首先启动master

redis-server redis.conf
然后启动slave

redis-server redis.conf
查看日志出现

* Connecting to MASTER...[5374] 23 Aug 03:33:20 * Receiving 5479067bytes data dump from MASTER[5374]23 Aug 03:33:21 * MASTER <-> SLAVE sync succeeded

恭喜主从复制成功

下面做个客户端测试吧

首先连接master添加数据

# ./redis-cli -h 192.168.3.159 -p 6379redis> set name ajunok
接着连接slave取出数据

# ./redis-cli -h 192.168.3.169 -p 6381redis> get name 'ajun'
到此为止 你的Redis主从复制算是圆满成功了!!!

赶快实验一下吧!!!




原创粉丝点击