首页 > 数据库 >从单机到分布式:Redis 如何重塑数据存储格局

从单机到分布式:Redis 如何重塑数据存储格局

时间:2024-09-19 22:52:16浏览次数:17  
标签:存储 服务 单机 Redis 内存 分布式系统 分布式

一、引言

随着大数据时代的到来,传统数据存储系统难以满足日益增长的性能和扩展性需求。Redis,作为新一代高性能内存数据结构存储系统,应运而生并迅速崛起。它不仅提供了卓越的读写速度和丰富的数据结构支持,还具备出色的可扩展性和灵活性,广泛应用于缓存、消息队列、实时数据分析等领域。Redis 的诞生,是技术创新的产物,更是市场需求推动的结果。本文将深入探讨 Redis 的缘起,从诞生背景到核心特性,再到广泛应用与未来发展,全面解析 Redis 如何在分布式存储领域占据一席之地。通过本文,您将更全面地了解 Redis 的魅力和价值。


二、认识 Redis

在 Redis 的官网里说到,Redis 是用来在内存中存储数据的,其实 Redis 研发出来的初心就是用来作为一个 "消息中间件" 的(消息队列)。也就是在分布式系统下的生产者消费者模型,那为什么会想让 Redis 作为一个存储数据的 "数据库" 呢?之前我们学过的 MySQL 不是更好嘛?其实根本原因还是因为 MySQL 的访问速度太慢了,但是在很多互联网的产品中,对于性能要求是非常高的,然而我们的 Redis 虽然说是数据库,但是他是在内存中存储的呀,内存就比硬盘要快很多很多了。

但是呢,当前很少会直接使用 Redis 作为消息中间件(业内有更多专业的消息中间件使用,并且内存很贵),那我们的 Redis 就这样废了吗?答案是并没有,前面也说到了,Redis 很快,然而在很多领域,都遵守二八原则,在互联网领域也一样,也就是说 20% 的数据能保证 80% 的需求,那我们只需要把那 20% 的数据给 Redis 保存不就好了吗?这样一来,又上升了访问速度,又节省了经济开销,所以在分布式系统中,经常使用 Redis,也只有在分布式系统中,Redis 才能发挥全部威力,如果只是单机的程序,那么直接通过变量存储数据,是比 Redis 要更优秀的。


三、什么是分布式

3.1、单机架构

想要理解什么是分布式,还是得先从单机架构开始说起,比如说这是一个电商网站,如下:

从单机到分布式:Redis 如何重塑数据存储格局_服务器

如果说是数据量少的情况下,单机架构是没问题的,可是如果业务进一步增长,用户量和数据量都水涨船高,可是一台主的硬件资源是有上限的呀,就比如说什么 CPU、内存、硬盘、网络等,服务器每次收到一个请求,都是需要消耗上述的一些资源的,如果同一时刻,处理的请求多了,此时就可能会导致某个硬件资源不够用了。

那遇到这种情况,无非就两种方法,第一是开源,最简单粗暴的方法,直接加硬件资源,比如说多插几个硬盘,多插几个内存条,搞个 cpu 集群什么的。

第二种呢就是节流,这是软件上的优化,需要通过性能测试,找到是哪个环节出现了瓶颈,然后去对症下药,但是这种情况非常难,需要程序猿很高的水平,水平这么高的程序猿工资肯定也不低啊,肯定是比升级设备要高不少的,所以第一种还是比较优先考虑的。

虽然说可以扩展一些硬件,但是一台主机上能增加的资源也是有限的呀,这取决于主板的扩展能力,当一台设备扩展到极限了,还是感觉不够,就只能引入多台主机了,不是说买了主机就能立即使用哈,还得在软件上做出相对应的调整和配置。一旦引入多台主机,咋们的系统就可以称为 "分布式系统" 了。

3.2、分布式

硬件这边已经ok了,那如何把软件也弄成分布式呢?还是上面那个例子,我们只需要把应用服务器和存储服务器分开就行了,如下:

从单机到分布式:Redis 如何重塑数据存储格局_Redis_02

应用服务器的话,里面可能会包含很多的业务逻辑,可能会很吃 cpu,那我们就可以买更好的 cpu 给应用服务器这台主机,而数据库服务器呢则需要更大的硬盘空间,更快的数据访问速度,所以我们可以配置一个更大的硬盘,上固态盘这些,以此来达到更高的性价比。

那如果说一台存储服务器不够怎么办?很简单嘛,可以使用多态啦,然后把数据库服务给读写分离开,那分开之后,要是一直从硬盘里面读也太慢了,所以 Redis 就这样诞生了,可以存 20% 的数据,这样就能满足 80% 的需求了,这也是 Redis 的初心。

3.3、微服务架构

首先看一张图:

从单机到分布式:Redis 如何重塑数据存储格局_服务器_03

之前使用应用服务器,一个服务器程序里面就做了很多的业务,这就可能会导致这一个服务器的代码越来越复杂,为了更方便于代码的维护,就可以把这样的一个复杂的服务器拆分成更多的,功能更单一,但是更小的服务器,这就是所谓的微服务,把这些功能看作是一个一个的人,其实微服务的本质就是在解决 "人" 的问题,当人多了,就需要一个配套的管理,把这些人组织好,划分组织结构,分成多个组,每个组配备领导管理,每个组完成每个组的工作就行了。

a)微服务的代价

那引入微服务的代价是什么呢?

  1. 第一点就是系统功能的下降,因为拆分出更多的服务,那么多个功能之间就更依赖于网络通信了,而网络通信的速度很可能是比硬盘速度还慢的。但是现在的网卡也有万兆网卡,读写速度已经能超过硬盘了,可是这东西贵啊,你不是只买个网卡就行了,你还的买支持这玩意儿的设备,还得有万兆网线这些,所以一般是不差钱的大厂才会搞这些。
  2. 第二点就是系统的复杂程序提高了,可用性受到了影响。

b)微服务的优势

  1. 解决了人的问题。
  2. 使用微服务,可以更方便于功能的复用。
  3. 可以给不同的服务进行不同的部署。

在以上种种的业务需求下,Redis 自然而然就诞生了,一般来说,Resdis 是用来存储少量的数据或者说 Session。


四、总结

在本文中,我们深入探讨了 Redis 的诞生背景、核心特性及其在分布式存储领域中的广泛应用。Redis 作为一款高性能的内存数据结构存储系统,凭借其卓越的读写速度、丰富的数据结构支持、出色的可扩展性和灵活性,在缓存、消息队列、实时数据分析等多个领域展现了巨大的价值。

从单机架构到分布式系统的演变过程中,Redis 的角色逐渐凸显。在数据量激增、性能要求日益严格的互联网场景下,Redis 以其内存存储的优势,有效解决了传统数据库如 MySQL 在访问速度上的瓶颈问题。尽管 Redis 最初设计为消息中间件,但其在数据存储方面的优异表现,使得它成为分布式系统中不可或缺的一部分,特别是在处理“二八原则”下高频访问的少量数据时,Redis 更是发挥了至关重要的作用。

此外,我们还简要介绍了微服务架构的概念及其与 Redis 的关联。微服务通过将复杂应用拆分为多个小型、独立的服务,提高了系统的可维护性和可扩展性。尽管微服务架构带来了网络通信复杂性和系统可用性挑战,但其优势在于解决了大型项目中团队协作和代码维护的难题,促进了功能的复用和灵活部署。


五、结语

在这个数据爆炸、技术日新月异的时代,Redis 以它独特的魅力和无限的潜力,在分布式存储的舞台上大放异彩。它不仅是技术创新的典范,更是市场需求推动下的产物。正如 Redis 的快速发展所展示的那样,只有不断适应变化、勇于创新,才能在激烈的竞争中立于不败之地。

让我们以 Redis 为镜,激励自己在未来的技术道路上不断探索、不懈追求。无论面对何种挑战和困难,都要保持对技术的热爱和敬畏之心,勇往直前,用智慧和汗水书写属于自己的辉煌篇章。在未来的日子里,愿每一位技术人都能像 Redis 一样,快速、灵活、坚韧不拔,在各自的领域里熠熠生辉!

标签:存储,服务,单机,Redis,内存,分布式系统,分布式
From: https://blog.51cto.com/bitzmbdp/12059378

相关文章

  • 2024Mysql And Redis基础与进阶操作系列(6)作者——LJS[含MySQL 多表之一对一/多;多对多;
    MySQL多表操作1多表关系简介1.1一对一关系比如1.2一对多/多对一关系比如:实现规则:1.3多对多关系举例:规则:2.多表联合查询简介多表查询有以下分类知识补充——笛卡尔积(了解即可)交叉连接查询[产生笛卡尔积]内连接查询(使用的关键字innerjoin--inner可以省......
  • 分布式存储技术如何强化企业数字化转型的可靠性与速度?附技术原理及特点
    在信息化、数字化和智能化快速发展的今天,数据已经成为推动经济社会发展的重要资源。随着5G、云计算、大数据、人工智能等技术的不断进步,数据量呈现爆炸式增长。与此同时,企业对数据的需求也日益增加,无论是用于业务分析、决策支持还是创新服务,数据都是不可或缺的。然而数据的快速增长......
  • 2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单
    目录1MySQL数据库基本操作-DQL-基本查询1.2SQL概述1.3SQL类2.SQL语言的规则与规范2.1基本规则2.2SQL大小写规范推荐采用统一的书写规范:2.3注释2.4命名规则(了解即可)举例:两句是一样的,不区分大小写创建表格order使用``飘号,因为order和系统关键字或系统函数名......
  • 2024Mysql And Redis基础与进阶操作系列(4)作者——LJS[含MySQL FOREIGN KEY、CHECK 、D
    接上集1.FOREIGNKEY约束1.1作用限定某个表的某个字段的引用完整性。例如:员工表的员工所在部门的选择,必须在部门表能找到对应的部分。1.2关键字FOREIGNKEY1.3主表和从表/父表和子表主表(父表):被引用的表,被参考的表从表(子表):引用别人的表,参考别人的表例如:员工表的员工所在部门这......
  • 分布式环境如何更新本地缓存
    引言本地缓存是一种常用的缓存手段,在客户端会经常使用这种手段来提升效率,但服务端在分布式环境下它出现的频率并不高,原因是本地缓存无法做到多台服务器数据共享,因此我们会采用redis这种分布式缓存,然而在某些情况下我们还是要使用的话怎么办呢?网上基本查不到有人去做这种分布式环......
  • Redis数据持久化RDB和AOF
    Redis数据持久化RDB和AOFRedis支持两种持久化机制:RDB(快照)和AOF(追加文件)。它们各有优缺点,适用于不同的场景。RDB(快照)特点:快照方式:在指定的时间间隔内(例如每隔5分钟或每隔1000个写入命令),Redis会生成当前内存数据的快照,并将其保存为RDB文件。文件格式:RDB文件是......
  • Python中使用Redis布隆过滤器
    Python中使用Redis布隆过滤器在Python中使用Redis布隆过滤器,可以利用redis-py库和redis-py-bloom扩展。布隆过滤器是一种空间效率高的概率性数据结构,适合用于判断某个元素是否在集合中。以下是如何在Python中设置和使用Redis布隆过滤器的步骤:安装依赖首先,确保你已经......
  • Redis 主从复制
    Redis的主从复制(Replication)是其高可用性和扩展性的重要特性之一。它允许你在多个Redis服务器之间同步数据,从而提高数据的可用性和读取性能。基本概念主节点(Master):处理写操作和大多数读操作,数据的主要存储位置。从节点(Slave):复制主节点的数据,通常用于负载均衡,分担读操作的压......
  • 分布式消息服务Kafka版的详细解析和配置方式
    分布式消息服务Kafka版是一款基于开源社区版Kafka提供的消息队列服务,它向用户提供计算、存储和带宽资源独占式的Kafka专享实例。以下是对分布式消息服务Kafka版的详细解析和配置方式的介绍。一、分布式消息服务Kafka版解析1.Kafka概述Kafka是一个开源的分布式消息系统,由Apa......
  • Redis数据结构跳跃列表(skipList)与压缩列表(ziplist)
    skiplist介绍跳表是一种数据结构,它使得包含了n个元素的有序序列的查找和插入的平均时间复杂度都是O(logn),优于数组的O(n)复杂度,快速的查找是通过维护多层次的链表实现的,且与前一层(下面一层)链表的数量相比,每一层的链表元素数量更少简单来讲跳表就是基于链表实现的有序列表,通过维......