博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在多台服务器上简单实现Redis的数据主从复制(3)(转载)
阅读量:6910 次
发布时间:2019-06-27

本文共 1784 字,大约阅读时间需要 5 分钟。

转载地址:      

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

你可能感兴趣的文章
SQL基础语法笔记教程整理
查看>>
Atitit  五种IO模型attilax总结 blocking和non-blocking synchronous IO和asynchronous I
查看>>
linux内核对中断的处理方式
查看>>
mybatis中oracle in>1000的处理
查看>>
在子线程更新主线程的UI组件
查看>>
关于Oracle AUTONOMOUS TRANSACTION(自治事务)的介绍
查看>>
初次尝试用Kotlin实现Android项目
查看>>
性能测试关于并发人数计算问题参考
查看>>
归并排序
查看>>
ping命令
查看>>
【转】PHP网站(nginx、php-fpm、mysql) 用户权限解析
查看>>
OpenTSDB介绍——基于Hbase的分布式的,可伸缩的时间序列数据库,而Hbase本质是列存储...
查看>>
MySQL备份mydumper的原理【转】
查看>>
Linux最常用命令的小总结
查看>>
easyui validatebox 验证类型DEMO
查看>>
Spring Boot项目的打包和部署
查看>>
元素绝对居中终极办法兼容IE8
查看>>
weblogic 的应用 常见问题处理 db2 链接不上(转载)
查看>>
linux下的Shell编程(5)循环
查看>>
Switch 语句
查看>>