转载地址:http://www.cnblogs.com/liping13599168/archive/2011/04/14/2016226.html

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

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

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

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

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

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

搜索"# bind 127.0.0.1"

1
bind 192.168.3.82

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

搜索"# bind 127.0.0.1"

搜索"slaveof <masterip> <masterport>"

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

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

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

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

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

1
./redis-server redis.conf

来启动redis服务。

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

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

而Master上:

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using ServiceStack.Redis;
 
static void Main(string[] args)
{
    IRedisClientFactory factory = new RedisCacheClientFactory();
    IRedisClient client = factory.CreateRedisClient("192.168.3.82", 6379);
 
    client.Set<string>("username", "leepy");
 
    string username = client.Get<string>("username");
 
    client.Save();
 
    Console.WriteLine("username: {0}", username);
 
    Console.ReadLine();
}</string></string>

运行结果:

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

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

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

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

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

在多台服务器上简单实现Redis的数据主从复制(3)(转载)的更多相关文章

  1. 在多台服务器上简单实现Redis的数据主从复制

          Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构.下面我演示下怎样在多台服务器上 ...

  2. 如何在同一台服务器上安装多套通达OA

    本人最近研究了在同一服务器安装多套通达OA的方法:发现网上关于这个话题的文章比较少,于是录制成视频,在此发布,希望对有这方面需求的朋友有所帮助: http://blog.163.com/zhuwei_ ...

  3. Twitter如何在数千台服务器上快速部署代码?

    答案是:用BT,也就是你我应该都很熟悉的BitTorrent. 对于网站经营者.创业者来说,扩展性的问题是在网站流量成长过程中势必会面对的问题,如何建立一个具有扩展性的架构(scalable arch ...

  4. Linux课程---16、apache虚拟主机设置(如何在一台服务器上配置三个域名)

    Linux课程---16.apache虚拟主机设置(如何在一台服务器上配置三个域名) 一.总结 一句话总结:有三个网站www.lampym.com,bbs.lampym.com,mysql.lampy ...

  5. Capistrano:自动完成多台服务器上新版本的同步更新,包括数据库的改变

    https://baike.baidu.com/item/Capistrano/6844928?fr=aladdin   Capistrano是一种在多台服务器上运行脚本的开源工具,它主要用于部署we ...

  6. 如何在一台服务器上安装两个mysql或者更多

    如何在一台服务器上安装两个mysql 1       前言 上篇写了在一台机器上源码编译安装一个mysql,那么如何在一台机器上源码编译安装两个mysql或者更多呢? 2       环境 mysql ...

  7. 在同一台服务器上配置多个Tomcat

    如果要在一台服务器上配置多个Tomcat,主要就是要避免Tomcat服务器的端口冲突的问题.只需要修改CATALINA_HOME\conf\server.xml中的启动端口和连接端口就OK了! 下面我 ...

  8. Microsoft Dynamics CRM 2011 面向Internet部署 (IFD) ADFS虚拟机环境搭建的步骤(CRM与ADFS装在同一台服务器上) 摘自网络

    1: 安装windows server 2008 R2 中文版 (过程略) 安装完成后设置机器名和IP地址, 本过程机器名 crm5dev,192.168.0.110 dns: 192.168.0.1 ...

  9. 一台服务器上同时启动多个 Tomcat

    在同一台服务器上启动多个 Tomcat 服务,需要修改 conf/server.xml文件里的三个部分,如下: 1.修改Http访问端口(默认为8080端口) <Connector port=& ...

随机推荐

  1. hiho #1372:平方求 (bfs)

    #1372 : 平方求和 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 对于一个非负整数n,最少需要几个完全平方数,使其和为n? 输入 输入包含多组数据.对于每组数据: ...

  2. pro*c调用过程

    数据库内有无参数过程名为procedure. pro*c调用过程 EXEC SQL EXECUTE   BEGIN     procedure;   END; END-EXEC; 需要在cfg配置文件 ...

  3. memcache 与 mencached扩展的区别

    memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的.需要频繁访问数据库的网站访问速 ...

  4. php curl 实例+详解

    直接上实例 <?php //创建一个新cURL资源 $ch = curl_init(); //用于中文等特殊字符的url转码 $aurl = urlencode($address); $url= ...

  5. 线段树区间更新&&求和poj3486

    给出了一个序列,你需要处理如下两种询问. ≤ c ≤ ). "Q a b" 询问[a, b]区间中所有值的和. Input 第一行包含两个整数N, Q. ≤ N,Q ≤ . 第二行 ...

  6. non

    I p(I q){r p(c((q>9?q-p(q/10):q)+'0')),q*10; }

  7. 【GoLang】golang中 channel 实现同步 与mutex/atomic 实现同步的讨论

    参考资料: https://groups.google.com/forum/#!topic/golang-china/q4pFH-AGnfs

  8. JustMock Lite (Free Mocking Framework For .net)

    通过 Nuget 安装 2.   官网下载(官网不行点这里) 3.   帮助文档 商业版和免费版区别概览 MockingContainer 测试类准备:一般来说也是业务类 public class C ...

  9. Python中下划线的使用方法

    本文将讨论Python中下划线(_)字符的使用方法.我们将会看到,正如Python中的很多事情,下划线的不同用法大多数(并非所有)只是常用惯例而已. 单下划线(_) 通常情况下,会在以下3种场景中使用 ...

  10. centos查找未挂载磁盘格式化并挂载

    查看当前linux服务器分区 df -h 查看当前linux服务器硬盘: fdisk -l /dev/sda   第一块硬盘 /dev/sdb   第二块硬盘 依此类推 以/dev/sdb为新增硬盘为 ...