zoukankan      html  css  js  c++  java
  • 在多台服务器上简单实现Redis的数据主从复制

     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下),基本流程是:

    image

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

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

    1
    bind 192.168.3.82

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

    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上:

    image

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

    而Master上:

    image

    能够接受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>

    运行结果:

    image

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

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

    image

    image

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

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

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

  • 相关阅读:
    streamsets 集成 cratedb 测试
    streamsets k8s 部署试用
    streamsets rest api 转换 graphql
    StreamSets sdc rpc 测试
    StreamSets 相关文章
    StreamSets 多线程 Pipelines
    StreamSets SDC RPC Pipelines说明
    StreamSets 管理 SDC Edge上的pipeline
    StreamSets 部署 Pipelines 到 SDC Edge
    StreamSets 设计Edge pipeline
  • 原文地址:https://www.cnblogs.com/zwb7926/p/3342908.html
Copyright © 2011-2022 走看看