`
zhaohaolin
  • 浏览: 985290 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

在多台服务器上简单实现Redis的数据主从复制【转】

阅读更多

Redis的主从复制功能非常强大,一个mas ter可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器 集群架构。下面我演示下怎样在多台服务器上进行Redis数据主从复制。这里我假设有两台服务器,一台是Windows 操作系统(局域网 IP :192.168.3.82),一台是Linux 操作系统(局域网IP:192.168.3.90),在两个操作系统都安装 redis,Windows操作系统使用cygwin工具进行安装,命令为:

 

1 $ tar xzf redis-2.2.2. tar .gz
2 $ cd redis-2.2.2
3 $ make

可以通过"make test”命令判断是否安装成功。

 

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

image

 

1. 在Windows服务器上创建两个目录,Demo1,Demo2,其中Demo1用来存放Master服务,Demo2用来存放Slave服务,

在Master服务中的配置文件修改:

1 bind 192.168.3.82

 

在Slave服务中的配置文件修改:

1 port 6381(服务端口号要分开)
2 bind 192.168.3.82
3 slaveof 192.168.3.82 6379 (设置master的Host以及Port)

 

2. 在Linux服务器上创建一个目录,Demo,Demo存放Slave服务,在服务中的配置文件修改:

1 bind 192.168.3.90
2 slaveof 192.168.3.82 6379(设置master的Host以及Port)

 

这样就完成了所有的配置。

 

3. 现在运行这3个服务,通过命令:

1 ./redis-server redis.conf

来启动redis服务。

 

注意到,当我启动master,然后启动一个slave的时候,可以发现slave上:

image

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

而Master上:

image

能够接受Slave的应答,并且开始持久化操作,说明在Slave每次去连接Master的时候,都会去持久化磁盘。

 

4. 现在开始写一个客户端程序,使用到ServiceStack.Redis.dll的.NET 组件:

 

01 using ServiceStack.Redis;
02  
03 static void Main( string [] args)
04 {
05      IRedisClientFactory factory = new RedisCache ClientFactory();
06      IRedisClient client = factory.CreateRedisClient( "192.168.3.82" , 6379);
07  
08      client.Set< string >( "username" , "leepy" );
09  
10      string username = client.Get < string >( "username" );
11  
12      client.Save();
13  
14      Console.WriteLine( "username: {0}" , username);
15  
16      Console.ReadLine();
17 }</ string ></ string >

运行结果:

image

数据Set的时候,数据保存在内存中,当调用Save方法时候,将数据保存在磁盘中。

其中你会发现在3个服务目录中,都出现了dump.rdb,说明Master的文件都同步到Slave中去了。

image

image

用UE编辑器打开文件查看:

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

 

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

分享到:
评论

相关推荐

    redis主从复制原理的深入讲解

    Redis持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点...

    Redis主从配置

    Redis的持久化保证了即使Redis服务重启也不会丢失数据,因为Redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当Redis服务器的硬盘损坏了可能会导致数据丢失,不过通过Redis的主从复制机制就可以避免这种单...

    【redis教程】13、redis的主从复制

    为了避免单机redis服务器故障,准备多台机器,同步保存多个副本,实现redis的高可用,同时实现数据冗余备份。 一、什么是主从复制 主从复制即将master机器中的数据即时有效的复制到slave机器中,一个master可以拥有...

    Redis主从复制详解

    为方便演示,在一台服务器上搭建redis主从(生产上不会这样做),根据端口区分。 主库 6379 从库 6380 编辑配置文件  vi redis-6379.conf  #后台进程启动 daemonize yes #端口 port 6379 #日志文件名称 logfile ...

    Redis高性能缓存

    集群技术是构建高性能网站架构的重要手段,试想在网站...上一篇我们讲到了 Redis 的主从复制技术,当实现了多节点的 master-slave 后,我们也可以把它叫做集群,但我们今天要讲的集群主要是利用切片技术来组建的集群。

    Redis非关系型数据库笔记-数据持久化-主从同步-缓存-笔记-五大数据类型-三大特殊数据类型

    主从同步:Redis支持主从同步,即可以将数据复制到任意数量的从服务器。这一特性使得Redis能够实现数据的备份和恢复,提高系统的可用性和可靠性。 Redis的应用场景非常广泛,包括但不限于: 缓存:Redis常被用作

    使用Docker搭建Redis主从复制的集群

    在实际应用中,如果有相应的设置,在向一台Redis服务器里写数据后,这个数据可以复制到另外一台(或多台)Redis服务器,这里数据源服务器叫主服务器(Master Server),而复制数据目的地所在的服务器叫从服务器...

    Redis 服务器管理(集群主从复制及高可用)

    区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对...

    Redis主从复制架构初步探索

    通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构。那么,我们首先来了解一下神马是主从复制架构?随着网站...

    redis2加强.doc

    特性 1〉速度快,数据放在内存中,官方...6〉主从复制:实现多个相同数据的 redis 副本 8〉高可用和分布式:哨兵机制实现高可用,保证 redis 节点故障发现和自动转移 9〉客户端语言多:java php python c c++ nodejs 等

    Redis-x64-3.0.500-rc1

    区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类...

    Redis API文档 全称:Remote Dictionary Server 远程字典服务

    区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类...

    redis 数据库

    Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-...数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。

    redis-core-java.zip

    区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类...

    一篇文章让你明白Redis主从同步

    我们知道,当有多台 Redis 服务器时,肯定就有一台主服务器和多台从服务器。一般来说,主服务器进行写操作,从服务器进行读操作。 那么这里有存在一个问题:从服务器如何和主服务器进行数据同步的呢? 这个问题,...

    Redis有哪些功能?

    单台服务器资源总是有上限的,CPU和IO资源可以通过主从复制,进行读写分离,把一部分CPU和IO的压力转移到从服务器上,但是内存资源怎么办,主从模式只是数据的备份,并不能扩充内存; 现在我们可以横向扩展,让每台...

    redis基础资料

    同时,Redis支持数据的持久化,你可以每隔一段时间将数据集转存到磁盘上(snapshot),或者在日志尾部追加每一条操作命令(append only file,aof)。 Redis同样支持主从复制(master-slave replication),并且具有...

    redis非关系型数据库

    一、Redis是什么? 1 是一个高性能的(key/value)分布式内存数据库; 2 是一个NoSql数据库,基于...4 分布式系统下,Redis可以利用哨兵模式Sentinel监控主机工作状态,在Master主服务器发生故障的时候,可以实现Maste

Global site tag (gtag.js) - Google Analytics