博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis主从复制
阅读量:3925 次
发布时间:2019-05-23

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

为什么有Redis主从复制

通过持久化功能,Redis保证了即使在服务器重启的情况下也不会丢失(或少量丢失)数据,但是由于数据是存储在一台服务器上的,如果这台服务器出现故障,比如硬盘坏了,也会导致数据丢失。

为了避免单点故障,我们需要将数据复制多份部署在多台不同的服务器上,即使有一台服务器出现故障其他服务器依然可以继续提供服务。

这就要求当一台服务器上的数据更新后,自动将更新的数据同步到其他服务器上,这时候就用到了Redis的主从复制

在这里插入图片描述
Redis提供了复制(replication)功能来自动实现多台redis服务器的数据同步(每天19点 新闻联播,基本从cctv1-8,各大卫视都会播放)

我们可以通过部署多台redis,并在配置文件中指定这几台redis之间的主从关系,主负责写入数据,同时把写入的数据实时同步到从机器,这种模式叫做主从复制,即master/slave,并且redis默认master用于写,slave用于读,向slave写数据会导致错误

Redis主从复制过程

过程原理:

当从库和主库建立MS关系后,会向主数据库发送SYNC命令

主库接收到SYNC命令后会开始在后台保存快照(RDB持久化过程),并将期间接收到的写命令缓存起来

当快照完成后,主Redis会将快照文件和所有缓存的写命令发送给从Redis

从Redis接收到后,会载入快照文件并且执行收到的缓存的命令

之后,主Redis每当接收到写命令时就会将命令发送从Redis,从而保证数据的一致

缺点:所有的slave节点数据的复制和同步都由master节点来处理,会照成master节点压力太大,使用主从从结构来解决

哨兵模式

反客为主的自动版,能够后台监控Master库是否故障,如果故障了根据投票数自动将slave库转换为主库。一组sentinel能

同时监控多个Master。

使用步骤:

1、在Master对应redis.conf同目录下新建sentinel.conf文件,名字绝对不能错;

2、配置哨兵,在sentinel.conf文件中填入内容:

sentinel monitor 被监控数据库名字(自己起名字) ip port 1

说明:上面最后一个数字1,表示主机挂掉后slave投票看让谁接替成为主机,得票数多少后成为主机。

3、启动哨兵模式:

命令键入:redis-sentinel /myredis/sentinel.conf

注:上述sentinel.conf路径按各自实际情况配置

Redis主从复制的缺点

延时,由于所有的写操作都是在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定

的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使得这个问题更加严重

参考:

https://blog.csdn.net/dc2222333/article/details/82690748
https://blog.csdn.net/qq_39669058/article/details/87720731

你可能感兴趣的文章
spring有三种启动方式
查看>>
大型电子商务网站架构
查看>>
小型电子商务网站设计原则
查看>>
大型Java多用户商城系统设计开发的心得和困难
查看>>
CGLib与JDK的动态代理
查看>>
Java单元测试(Junit+Mock+代码覆盖率)
查看>>
怎样使用 Junit Framework 进行单元测试的编写
查看>>
MAVEN常用命令+基本配置详解 2015
查看>>
java:快速文件分割及合并
查看>>
redis 学习笔记(1)-编译、启动、停止
查看>>
redis 学习笔记(2)-client端示例代码
查看>>
redis 学习笔记(3)-master/slave(主/从模式)
查看>>
redis 学习笔记(4)-HA高可用方案Sentinel配置
查看>>
redis 学习笔记(5)-Spring与Jedis的集成
查看>>
nginx学习(1):编译、安装、启动
查看>>
nginx学习(2):启动gzip、虚拟主机、请求转发、负载均衡
查看>>
企业应用通用架构图
查看>>
深入理解Java:注解(Annotation)基本概念
查看>>
深入理解Java:注解(Annotation)自定义注解入门
查看>>
深入理解Java:注解(Annotation)--注解处理器
查看>>