在高可用这条路上你知道Redis有多努力吗

文章介绍了常规数据库与内存数据库的区别,特别是Redis如何通过基于内存的高速读写、支持多种数据类型和高可用性设计来提升性能。对比了memcached和Redis的发展,强调了Redis在解决单机重启数据丢失问题上的持久化策略,如快照备份和AOF同步,以及主从复制和哨兵模式在高可用性方面的应用。
摘要由CSDN通过智能技术生成

这里所说的常规数据库是指基于硬盘读写的数据库,比如 Oracle , Mysql , Mongodb 等。基于硬盘读写的数据库可以有效的保证数据的高可用性。这里的高可用性指的是操作系统或者数据库崩溃之后,不会造成数据丢失,这也是对数据库的最基本要求。

内存数据库

========================================================================

基于硬盘读写的数据库虽然可以保证数据的高可用性,但是读写速度比较慢,这也是磁盘 I/O的天然属性。虽然切换固态硬盘之后,性能会有显著提升,但是经济成本也会随之升高,而且固态硬盘使用寿命偏低。为了解决这个问题, Redis 做出了改变。 Redis 是基于内存进行读写的数据库,把数据全部存储在内存中,这样就可以大幅提高数据的读写速度。

memcached

============================================================================

说到内存数据库,不得不提 memcached , memcached 比 Redis 出现的更早,也是基于内存进行数据存储。在十几年前,大家通用的缓存方案就是 memcached 。 memcached 支持 Key-Value形式的数据存储,但是只支持 String 类型的数据结构,不支持更复杂的数据结构,也不支持集群。

操作系统或者 memcached 重启后数据就会丢失。这也是基于内存进行数据存储的最大缺点。

Redis

========================================================================

Redis 继承了 memcached 所有的优点,并改进了很多缺点。比如 Redis 也是基于内存进行数据操作,并且支持更多的数据类型,比如 List , Set 等。最最主要的,也是这篇文章的重点, Redis 支持数据高可用,也就是说 Redis 或者操作系统重启之后,数据不会丢失。

Redis 在高可用这条路上所付出的努力,就像一个不断努力进取的励志青年。

单机持久化

========================================================================

众所周知,放在内存中的数据是不稳定的。为了解决因为系统或者 Redis 重启造成的数据丢失问题。 Redis 提供了两种数据持久化方案。

  1. 快照备份把 Redis 数据库中的数据,定时备份到磁盘中。当数据库重启的时候,可以通过定时备份到磁盘文件中的快照文件进行数据恢复。这样 Redis 既保证了数据的读写速度,又保证了数据的高可用。

  2. AOF 同步写快照备份有个缺点,就是会丢失一部分数据。比如在新的快照文件生成之前,系统发生了问题,那么最近一次快照之后的数据将丢失。 Redis 为了解决这个问题,提出了 AOF 解决方案。所谓的 AOF 就是将每次写入数据的命令都以追加的方式记录到文件中。这样在系统出问题的时候,只要将这个文件中的命令全部重放一下就OK了。这样就可以做到不丢数了。

但是如果数据写入操作太多的话,会造成 AOF 文件过大,为了解决这个问题 Redis 提供了 AOF 自动压缩功能,以及去重功能,这样可以达到对文件体积大小进行优化的目的。

在高可用这条路上你知道Redis有多努力吗

主从复制

=======================================================================

上面的两种持久化方案,对于单节点 Redis 来说,基本已经够用了。但是我们的系统总是越做越大,要求越来越多。有的时候单节点 Redis 往往撑不住系统的访问量。这种情况下 Redis 提供了主从模式。

所谓的主从模式就是一个主节点,负责读和写,一个从节点,负责将主节点的数据同步到从节点,这样主从节点信息就是一致的。

注意:从节点不支持写操作,但是可以支持读操作。当其中任意一个点挂掉之后,数据不会损失。而且可以将读的压力分散到多个节点,支持更大的访问量。

在高可用这条路上你知道Redis有多努力吗

哨兵模式

=======================================================================

对于主从模式,这里有个最大的痛点。当主节点挂掉后,从节点是不会自动升级为主节点的。也就是负责往 Redis 写入的程序会报错,但是读操作不会有问题。这一点不太符合高可用的要求。为了解决发生故障,主节点自动切换的问题, Redis 又给大家提供了哨兵模式。

所谓的哨兵模式就是,提供三个哨兵节点(同样是 Redis 实例,只不过不存储数据),来监控主从模式下的所有 Redis 节点(真正存储数据的节点)。客户端程序通过哨兵节点获取主节点信息。当主节点挂掉后,哨兵节点会自动将其中一个从节点升级为主节点,提供给客户端程序执行写入操作。当发生故障的主节点恢复后,会自动变为新的主节点的从节点。

在高可用这条路上你知道Redis有多努力吗
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

1200页Java架构面试专题及答案

小编整理不易,对这份1200页Java架构面试专题及答案感兴趣劳烦帮忙转发/点赞

百度、字节、美团等大厂常见面试题

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
713601855665)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值