Redis 高可用的手段--数据持久化--主从数据同步(主从复制) --Redis哨兵模式-- Redis集群

Redis 是如何实现高可用的

感谢拉钩教育

优秀的Redis文章

Redis 作为一款普及率最高的内存型中间件

Redis 高可用的手段主要有以下四种:

  • 数据持久化
  • 主从数据同步(主从复制)
  • Redis哨兵模式(Sentinel)
  • Redis集群(Cluster)

数据持久化: 保证了系统在发生宕机或者重启之后数据不会丢失.增加了系统的可靠性和减少了系统不可用的时间(省去了手动恢复数据的过程)

主从数据同步:将数据储存至多台服务器,这样样当遇到一台服务器宕机之后,可以很快地切换至另一台服务器以继续提供服务

哨兵模式:用于发生故障之后自动切换服务器

Redis 集群:提供了多主多从的 Redis 分布式集群环境,用于提供性能更好的 Redis 服务,并且它自身拥有故障自动切换的能力。

数据持久化

持久化功能是 Redis 和 Memcached 的主要区别之一,因为只有 Redis 提供了此功能。

在Redis4.0之前数据持久化方式有两种,AOF和RDB方式

RDB(Redis DataBase,快照方式) 是将某一个时刻的内存数据,以二进制方式写入磁盘

AOF(Append Only File,文件追加方式),是指将所有的操作命令,以文本的形式追加到文件中

RDB

RDB 默认的保存文件为 dump.rdb,优点是以二进制储存的,因此占用的空间更小,数据存储更紧凑,并且与 AOF 相比,RDB 具备更快的重启恢复能力。

在这里插入图片描述

/image-20210528234259818.png" alt=“image-20210528234259818” style=“zoom:50%;” />

自定义

save 60 5 60秒内修改5个

触发机制
  • save规则满足规则时候,会产生rdb
  • 执行flushAll会产生RDB文件
  • 退出Redis,也会产出Rdb文件
恢复rdb文件

放在运行的目录即可

127.0.0.1:6379> config get dir #获取运行目录
1) "dir"
2) "/home/blank/\xe6\xa1\x8c\xe9\x9d\xa2"
优缺点

优:

  • 大规模数据恢复,dump.rdb效率很高
  • 对数据完整性要求不高

缺点:

  • 需要一定时间进行间隔操作,意外宕机后,删除就没了
  • fork进程的时候,会占用内存空间

AOF

AOF 默认的保存文件为:appendonly.aof,他的优点是: 储存频率更高,因此丢失数据的风险就越低,并且 AOF 并不是以二进制存储的,所以它的存储信息更易懂缺点是占用空间大,重启之后的数据恢复速度比较慢。

在这里插入图片描述

将所有命令都记录下来 , 恢复的时候,全部执行一遍

操作:

默认不开启,需要是手动开启,appendonly yes,开启AOF,重启即可生效

如果aof文件损坏,则无法启动redis,aof使用redis-check-aof --fix修复aof文件

在这里插入图片描述

如果aof文件大于60m,会开启新的线程来重写文件

优点
  • 每次修改都同步,文件完整性更加好
  • 每秒同步一次,可能丢失一秒的数据

缺点

  • aof文件大,修复速度慢
  • aof运行效率低,所以默认redis为rdb模式

可以看出 RDB 和 AOF 各有利弊,

  • RDB 具备更快速的数据重启恢复能力,并且占用更小的磁盘空间,但有数据丢失的风险;
  • 而 AOF 文件的可读性更高,但却占用了更大的空间,且重启之后的恢复速度更慢,
  • 于是在 Redis 4.0 就推出了混合持久化的功能。

混合持久化

Redis 可以使用 RDB + AOF 两种格式来进行数据持久化,这样就可以做到扬长避短物尽其用了

我们可以使用config get aof-use-rdb-preamble的命令来查询Redis混合持久化的功能是否开启,执行示例如下

127.0.0.1:6379> config get aof-use-rdb-preamble
1) "aof-use-rdb-preamble"
2) "yes"

执行结果为“no”则表示混合持久化功能关闭,不过我们可以使用“config set aof-use-rdb-preamble yes”的命令打开此功能。

开启后: 开始的数据以RDB的格式进行储存,因此只会占用少量的空间,并且之后的命令会以AOF的方式进行数据的追加,这就就可以减少数据丢失的风险,同时可以提高数据恢复的速度

Redis 主从同步

主从模式和从从模式。主从模式就是一个主节点和多个一级从节点,如下图所示:

在这里插入图片描述

而从从模式是指一级从节点下面还可以拥有更多的从节点,如下图所示:

在这里插入图片描述

主从模式可以提高Redis的整体运行速度,因为使用主从模式就可以实现数据的读写分离,把写操作的请求发到主节点,把其他的读操作请求分发到从节点上,这样就减轻了 Redis 主节点的运行压力,并且提高了 Redis 的整体运行速度。

实现了 Redis 的高可用,当主服务器宕机之后,可以很迅速的把从节点提升为主节点,为 Redis 服务器的宕机恢复节省了宝贵的时间。

还降低了数据丢失的风险,因为数据是完整拷贝在多台服务器上的,当一个服务器磁盘坏掉之后,可以从其他服务器拿到完整的备份数据。

Redis 哨兵模式

Redis 主从复制模式有那么多的优点,但是有一个致命的缺点就是当 Redis 的主节点宕机之后,必须人工介入手动恢复.这个时候需要哨兵模式进行解决

Redis 哨兵模式就是用来监视 Redis 主从服务器的,当 Redis 的主从服务器发生故障之后,Redis 哨兵提供了自动容灾修复的功能,如下图所示:

在这里插入图片描述

Redis 哨兵模块存储在 Redis 的 src/redis-sentinel 目录下,如下图所示:

在这里插入图片描述

我们可以使用=="./src/redis-sentinel sentinel.conf"==

工作原理:

哨兵的工作原理是每个哨兵会以每秒钟 1 次的频率,向已知的主服务器和从服务器,发送一个 PING 命令。如果最后一次有效回复 PING 命令的时间,超过了配置的最大下线时间(Down-After-Milliseconds)时,默认是 30s,那么这个实例会被哨兵标记为主观下线。

如果一个主服务器被标记为主观下线,那么正在监视这个主服务器的所有哨兵节点,要以每秒 1 次的频率确认主服务器是否进入了主观下线的状态。如果有足够数量(quorum 配置值)的哨兵证实该主服务器为主观下线,那么这个主服务器被标记为客观下线。此时所有的哨兵会按照规则(协商)自动选出新的主节点服务器,并自动完成主服务器的自动切换功能,而整个过程都是无须人工干预的。

Redis 集群

Redis 集群也就是 Redis Cluster,它是 Redis 3.0 版本推出的 Redis 集群方案,将数据分布在不同的主服务器上,以此来降低系统对单主节点的依赖,并且可以大大提高 Redis 服务的读写性能。Redis 集群除了拥有主从模式 + 哨兵模式的所有功能之外,还提供了多个主从节点的集群功能,实现了真正意义上的分布式集群服务

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值