您的位置:首页 > 数据库 > Redis

redis 主从模式

2015-12-21 18:29 459 查看
redis的主从复制配置

一、     原理

Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构。下面是关于redis主从复制的一些特点:

1.master可以有多个slave

2.除了多个slave连到相同的master外,slave也可以连接其他slave形成图状结构

3.主从复制不会阻塞master。也就是说当一个或多个slave与master进行初次同步数据时,master可以继续处理client发来的请求。相反slave在初次同步数据时则会阻塞不能处理client的请求。

4.主从复制可以用来提高系统的可伸缩性,我们可以用多个slave 专门用于client的读请求,比如sort操作可以使用slave来处理。也可以用来做简单的数据冗余

5.可以在master禁用数据持久化,只需要注释掉master 配置文件中的所有save配置,然后只在slave上配置数据持久化。

下面介绍下主从复制的过程

       当设置好slave服务器后,slave会建立和master的连接,然后发送sync命令。无论是第一次同步建立的连接还是连接断开后的重新连 接,master都会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存起来。后台进程完成写文件 后,master就发送文件给slave,slave将文件保存到磁盘上,然后加载到内存恢复数据库快照到slave上。接着master就会把缓存的命 令转发给slave。而且后续master收到的写命令都会通过开始建立的连接发送给slave。从master到slave的同步数据的命令和从
client发送的命令使用相同的协议格式。当master和slave的连接断开时slave可以自动重新建立连接。如果master同时收到多个 slave发来的同步连接命令,只会使用启动一个进程来写数据库镜像,然后发送给所有slave。

二、     配置

下面我演示下怎样在多台服务器上进行Redis数据主从复制。我假设有两台服务器,一台是Linux操作系统(局域网IP:192.168.1.4,master服务器),一台是Linux操作系统(局域网IP:192.168.1.5,slave服务器)

配置slave服务器很简单,只需要在配置文件(redis.conf)中加入如下配置

bind  192.168.1.5(从服务器,此处默认是127.0.0.1,请修改成本机的IP地址,要不然,客户端无法进行访问)

slaveof 192.168.1.4 6379  (映射到主服务器上)

如果是在一台机器上面配置主从关系,那么还需要修改从服务器的默认端口号,同样也在redis.conf中进行修改。

其中还有些redis自身的配置请参见我的另一篇文章

三、     测试

当启动master机器后,写入数据到master后,这时启动slave机器,可以发现slave上:



会发送一个SYNC请求,从Master上面进行相应,而且它支持自动重连,即当master掉线的情况下,它会处于等待请求的状态。

而Master上:



两台机器的dump文件大小一样:

192.168.1.5(slave):



192.168.1.4(master):



从Redis源码中,可以发现rdb文件采用的是lzf压缩算法进行实现,默认lzf压缩算法是开启的。

这样你可以通过其他的客户端程序或者Web平台去读取Slave磁盘数据库的数据,真正达到了读写分离的目的。

posted @ 2011-09-20 18:24 weafer 阅读(576) 评论(0)  编辑

Redis 的安装配置介绍

redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。问题是这个项目还很新,可能还不足够稳定,而且没有在实际的一些大型系统应用的实例。此外,缺乏mc中批量get也是比较大的问题,始终批量获取跟多次获取的网络开销是不一样的。

性能测试结果:

SET操作每秒钟 110000 次,GET操作每秒钟 81000 次,服务器配置如下:

Linux 2.6, Xeon X3320 2.5Ghz.

stackoverflow 网站使用 Redis 做为缓存服务器。

安装过程:

Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务 器。

Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: