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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/u013254183/article/details/90044312

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

redis作为一种高效的缓存框架,使用是非常广泛的,在数据存储上,在运行时其将数据存储在内存中,以实现数据的高效读写,并且根据定制的持久化规则不同,其会不定期的将数据持久化到硬盘中。另外相较于其他的NoSql数据库,redis提供了非常丰富的数据结构,如dict,sds,linkedlist,ziplist,set,quicklist,geometry。在这些存储结构的基础上,redis为用户提供了非常丰富的操作选择,如通过zskiplist来达到对某种类型的数据的排序目的,而排序在数据库中是一个非常耗时的操作。

(一)准备工作

Redis windows 64位下载地址
在这里插入图片描述
选择安装版或者压缩版下载都可以。
准备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密码(为了方便主从密码都设置一样的)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    然后修改从服务slave的redis.windows.conf,一共修改3个地方
    设置从属ip:slaveof 192.168.1.246 6379
    设置主服务连接密码:masterauth test@2017
    设置备服务密码requirepass test@2017
    在这里插入图片描述
    在这里插入图片描述

(三)启动服务

先启动主服务,cd 进入redis安装目录,输入启动命令redis-server.exe redis.windows.conf
如下图说明启动成功,打印了从服务ip等信息
在这里插入图片描述
然后启动备服务,cd 进入redis安装目录,输入启动命令redis-server.exe redis.windows.conf
如下图说明启动成功,打印了主服务ip等信息
在这里插入图片描述

(四)测试主从同步

在主服务器上进入redis安装目录运行redis-cli.exe客户端程序在这里插入图片描述

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

在这里插入图片描述
然后在备服务器上进入redis安装目录运行redis-cli.exe客户端程序,同上

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

在这里插入图片描述

(四)主从同步过程

在这里插入图片描述
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哨兵模式,详情见系列文章第二篇。

猜你喜欢

转载自blog.csdn.net/u013254183/article/details/90044312