在多台服务器上简单实现Redis的数据主从复制(3)(转载)
转载地址: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.82slaveof 192.168.3.82 6379 (设置master的Host以及Port) |
2. 在Linux服务器上创建一个目录,Demo,Demo存放Slave服务,在服务中的配置文件修改:
|
1
2
|
bind 192.168.3.90slaveof 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)(转载)的更多相关文章
- 在多台服务器上简单实现Redis的数据主从复制
Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构.下面我演示下怎样在多台服务器上 ...
- 如何在同一台服务器上安装多套通达OA
本人最近研究了在同一服务器安装多套通达OA的方法:发现网上关于这个话题的文章比较少,于是录制成视频,在此发布,希望对有这方面需求的朋友有所帮助: http://blog.163.com/zhuwei_ ...
- Twitter如何在数千台服务器上快速部署代码?
答案是:用BT,也就是你我应该都很熟悉的BitTorrent. 对于网站经营者.创业者来说,扩展性的问题是在网站流量成长过程中势必会面对的问题,如何建立一个具有扩展性的架构(scalable arch ...
- Linux课程---16、apache虚拟主机设置(如何在一台服务器上配置三个域名)
Linux课程---16.apache虚拟主机设置(如何在一台服务器上配置三个域名) 一.总结 一句话总结:有三个网站www.lampym.com,bbs.lampym.com,mysql.lampy ...
- Capistrano:自动完成多台服务器上新版本的同步更新,包括数据库的改变
https://baike.baidu.com/item/Capistrano/6844928?fr=aladdin Capistrano是一种在多台服务器上运行脚本的开源工具,它主要用于部署we ...
- 如何在一台服务器上安装两个mysql或者更多
如何在一台服务器上安装两个mysql 1 前言 上篇写了在一台机器上源码编译安装一个mysql,那么如何在一台机器上源码编译安装两个mysql或者更多呢? 2 环境 mysql ...
- 在同一台服务器上配置多个Tomcat
如果要在一台服务器上配置多个Tomcat,主要就是要避免Tomcat服务器的端口冲突的问题.只需要修改CATALINA_HOME\conf\server.xml中的启动端口和连接端口就OK了! 下面我 ...
- 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 ...
- 一台服务器上同时启动多个 Tomcat
在同一台服务器上启动多个 Tomcat 服务,需要修改 conf/server.xml文件里的三个部分,如下: 1.修改Http访问端口(默认为8080端口) <Connector port=& ...
随机推荐
- BZOJ 4665: 小w的喜糖
Sol DP+容斥. 这就是一个错排的扩展...可是想到容斥却仅限于种数的容斥,如果种数在一定范围内我就会做了QAQ. 但是容斥的是一定在原来位置的个数. 发现他与原来的位置无关,可以先把每个同种的糖 ...
- [NOIP2015] 子串substring 题解
[题目描述] 有两个仅包含小写英文字母的字符串A和B.现在要从字符串A中取出k个互不重叠的非空子串,然后把这k个子串按照其在字符串A中出现的顺序依次连接起来得到一个新的字符串,请问有多少种方案可以使得 ...
- 调用pyxmpp库PyQt编程打包成exe文件出错
pyxmpp库内resolver.py内getaddrinfo获取Openfire服务器地址出错
- 7.31 签到,js 全局预处理笔记
js 解析与执行过程: 一.全局: 1.预处理阶段 : 1.LexicalEnviroment === window {1.预处理 var | 2.function xxx //预处理申明的 ...
- jenkins集成ansible注意事项Failed to connect to the host via ssh.
在集成jenkins和ansible实现自动化部署时,root用户下执行ansible命令时可以正常运行.由于是通过jenkins用户去执行ansible命令,而jenkins用户却报如下异常: XX ...
- iOS FMDB 不需要关闭
以前做了一个应用,里面用到了FMDB,进行每一次操作前,都open,完成操作后都close.因为我是参考他们以前的代码.程序初期没发现什么问题,程序完成后,各种卡顿就出现了!即使我是放在新线程里操作的 ...
- ios 在程序中使用iCloud
注意,这里说的使用icould不是用icloud进行系统备份,那个功能不需要我们写代码,备份到icloud的东西我们也不能操作.我们指的是以下这3种icloud使用方法: 这里有3中使用方法, Key ...
- Python—>Mysql—>Dbvisualizer
MySQLdb: https://pypi.python.org/pypi/MySQL-python/1.2.4 import MySQLdb 1.Download Connector/Python: ...
- springmvc 文件下传、上载、预览。以二进制形式存放到数据库(转载)
springmvc 文件上传.下载.预览.以二进制形式存放到数据库.数据库中的关于传入附件的字段我写了2个:一个存放内容accessory,一个存放文件的后缀filetype 上传:首先需要2个必须的 ...
- MAC系统下配置环境变量
环境变量初始值 /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 使用export 可以设置暂时的环境变量 如果要追加PATH的话添加新的变量到文件中expor ...