Redis入门学习笔记(三)windows redis主从同步

本博客属作者原创,未经允许禁止转载,请尊重原创!如有问题请联系QQ509961766

(一)准备工作

选择安装版或者压缩版下载都可以。
准备2台windows 服务器,我这里是windows server 2012
主服务:192.168.1.246:6379 (master)
备服务:192.168.1.90:6379(slave)

(二)主从同步配置

首先修改主服务master的redis.windows.conf,一共修改3个地方

  • 去掉ip绑定,也可以注释掉,这样所有的局域网内的ip都可以连接
  • 关闭保护模式
  • 设置主/备切换时redis密码(为了方便主从密码都设置一样的)
  • 设置redis密码(为了方便主从密码都设置一样的)
    Redis入门学习笔记(三)windows redis主从同步_第1张图片
    Redis入门学习笔记(三)windows redis主从同步_第2张图片
    Redis入门学习笔记(三)windows redis主从同步_第3张图片
    然后修改从服务slave的redis.windows.conf,一共修改3个地方
    设置从属ip:slaveof 192.168.1.246 6379
    设置主服务连接密码:masterauth test@2017
    设置备服务密码requirepass test@2017
    Redis入门学习笔记(三)windows redis主从同步_第4张图片
    Redis入门学习笔记(三)windows redis主从同步_第5张图片

(三)启动服务

先启动主服务,cd 进入redis安装目录,输入启动命令redis-server.exe redis.windows.conf
如下图说明启动成功,打印了从服务ip等信息
Redis入门学习笔记(三)windows redis主从同步_第6张图片
然后启动备服务,cd 进入redis安装目录,输入启动命令redis-server.exe redis.windows.conf
如下图说明启动成功,打印了主服务ip等信息
Redis入门学习笔记(三)windows redis主从同步_第7张图片

(四)测试主从同步

在主服务器上进入redis安装目录运行redis-cli.exe客户端程序Redis入门学习笔记(三)windows redis主从同步_第8张图片

  • 先登录输入命令:auth test@2017
  • 然后设置key=hello,value=world的键值
  • 最后查看设置成功

Redis入门学习笔记(三)windows redis主从同步_第9张图片
然后在备服务器上进入redis安装目录运行redis-cli.exe客户端程序,同上

  • 先登录输入命令:auth test@2017
  • 然后查看是否有key=hello这个键值,打印出来world说明同步成功

Redis入门学习笔记(三)windows redis主从同步_第10张图片

(四)主从同步过程

Redis入门学习笔记(三)windows redis主从同步_第11张图片
1、Slave服务启动,主动连接Master,并发送SYNC命令,请求初始化同步

2、Master收到SYNC后,执行BGSAVE命令生成RDB文件,并缓存该时间段内的写命令

3、Master完成RDB文件后,将其发送给所有Slave服务器

4、Slave服务器接收到RDB文件后,删除内存中旧的缓存数据,并装载RDB文件

5、Master在发送完RDB后,即刻向所有Slave服务器发送缓存中的写命令

6、全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。(第一次全量)

7、增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步。(之后增量)

8、但是只要是重新连接master,一次完全同步(全量复制)将被自动执行。

(五)主从同步特点

数据冗余

主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

读写分离

主机会自动将数据同步到从机,可以进行读写分离,提升性能。

故障恢复

当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复,但实际上是一种服务的冗余。

负载均衡

在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。

IO剧增

每次slave断开以后(无论是主动断开,还是网路故障)再连接master都要将master全部dump出来rdb,在aof,即同步的过程都要重新执行一遍;所以要记住多台slave不要一下都启动起来,否则master可能IO剧增(间隔1-2分)

复制延迟

由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。

可用性不高

当有主节点发生异常情况,就会导致不能写入,导致业务出错!解决方法是可以使用Redis-Sentinel哨兵模式,详情见系列文章第二篇。

你可能感兴趣的:(redis)