在多台服务器上简单实现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下),基本流程是:

 

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

会发送一个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磁盘数据库的数据,真正达到了读写分离的目的。

时间: 2024-11-10 04:18:51

在多台服务器上简单实现Redis的数据主从复制的相关文章

实现在同一台服务器上登录的ssh用户的群聊(聊天室)功能

直接上代码了,注释还算清晰,有问题欢迎提问指证. 为方便下载编译,代码都放到一个文件里了. 服务器是CentOS,客户端用的secureCRT. /* 功能: 在同一台服务器上ssh登录的用户可以群聊(聊天室) 原理:<span style="white-space:pre"> </span>1.通过roomNo.来区分不同的房间或群组: 2.以roomNo.作为key来创建一块共享内存,来保存进入到该room的用户列表: 3.用户以ssh(或其它方式)登录到服

ZABBIX监控一台服务器上多实例memcache落地经验步骤

大家好!我是系统运维工程师: 李超  上一次给大家分享了工作中监控多实例tomcat的自发现zabbix做法,今天带给大家的就是一台服务器上监控多memcache的一个落地经验. 首先我带大家看一下多实例memcache做法,话不多说,咱们开工: 由于是多实例,所以就需要用到zabbix的自动发现功能(LLD)基本思路如下: 1.写自动发现脚本. 2.写状态取值脚本. 3.添加配置文件. 4.添加权限. 5.配置zabbix web. zabbix我采用yum安装所以路径是/etc/zabbix

三台服务器上离线安装redis哨兵集群,一主二从三哨兵

三台服务器上离线安装redis哨兵集群,一主二从三哨兵 系统安装好gcc环境,(不然编译redis会报错).依旧不知道怎么离线安装gcc环境的可查看CentOS下离线安装gcc环境,图文详细 下载 点击官网地址下载Linux版的redis http://download.redis.io/releases/redis-5.0.4.tar.gz 上传 put D:\AppStore\redis\redis-5.0.4.tar.gz /root 安装 tar xzf redis-5.0.4.tar.

【 Linux 】单台服务器上并发TCP连接数

单台服务器上并发TCP连接数    问题:一台服务器到底能够支持多少TCP并发连接呢? 1. 文件描述符限制:    对于服务器来说,每一个TCP连接都要占用一个文件描述符,一旦文件描述符使用完,新的连接到来返回给我们的错误是"Socket/File:Can't open so many files" 这时,你需要明白操作系统可以打开最大文件数的限制. 进程限制(用户限制):            执行 ulimit -n 输出1024,说明对于一个进程而言最多只能打开1024个文件,

网络编程释疑之:单台服务器上的并发TCP连接数可以有多少

曾几何时我们还在寻求网络编程中C10K问题的解决方案,但是现在从硬件和操作系统支持来看单台服务器支持上万并发连接已经没有多少挑战性了.我们先假设单台服务器最多只能支持万级并发连接,其实对绝大多数应用来说已经远远足够了,但是对于一些拥有很大用户基数的互联网公司,往往面临的并发连接数是百万,千万,甚至腾讯的上亿(注:QQ默认用的UDP协议).虽然现在的集群,分布式技术可以为我们将并发负载分担在多台服务器上,那我们只需要扩展出数十台电脑就可以解决问题,但是我们更希望能更大的挖掘单台服务器的资源,先努力

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

. 在同一台服务器上配置多个Tomcat,布布扣,bubuko.com

windows下同一台服务器上装有两个ORACLE数据库实例,通过命令启停数据库

同一台服务器上装有两个ORACLE数据库实例,通过命令启停数据库,如何区分操作的是哪个数据库实例?操作如下: 1.在命令行 set oracle_sid=one_实例   //先修改环境变量,这一步等于切换了数据库实例 sqlplus /nolog    connect /as sysdba    shutdown 或者 2.连接的时候 sqlplus user/[email protected] as sysdba    //也可以指定 shutdown immediate select in

在一台服务器上部署多个Tomcat

在一台服务器上配置多个Tomcat的方法: 这几天由于在研究OGSA-DQP,但是其网站上只提供了在Linux下的安装文档,而且需要在一天服务器上配置两个Tomcat,但是我一直没有弄懂怎么在Windows下实现. 如果要在一台服务器上配置多个Tomcat,主要就是要避免Tomcat服务器的端口冲突的问题.只需要修改CATALINA_HOME\conf\server.xml中的启动端口和连接端口就OK了! 下面我们把配置的详细过程写在下面,以供参考:(此例以配置两个Tomcat为例) 1. 下载

SqlServer A库与B库在同一台服务器上

方法1: insert into A.dbo.users(field1,field2,field3) select * from B.dbo.users 注:同一服务器,A和B为不同的数据库,如表中有自动标示,可先把自动标示取消,再执行. 方法2: a.将数据库A中的表dbo.users复制到数据库B,需要进行第一步:右击—>编辑表脚本—>CREATE到—>新查询编辑窗口,把内容复制! b.在查询中,选择数据库B,右键选择[新建查询],然后,粘贴进来上面复制的代码.记得把use B那一行