【redis】认识redis和分布式系统

news2024/11/15 4:20:18

文章目录

  • 认识 redis
    • redis 的主要功能
    • 实现数据库
    • 实现缓存
    • 实现消息中间件
  • 分布式系统
    • 单机架构
    • 为什么数据多了主机就难以应对 ?
    • 分布式系统

认识 redis

redis 的主要功能

用来在内存中存储数据


定义变量不就是在内存中存储数据吗?为什么还需要 redis 来向内存中存储数据?这不是绕了一个圈嘛?

  • redis 是在分布式系统中才能发挥威力
  • 如果只是单机程序,直接通过变量存储数据的方式,是比使用 redis 更优的选择

由于我们现在很多的系统都是分布式的系统,在分布式系统中,若想让多个服务器都共享同一份数据,又想这个数据存在于内存中,此时使用 redis 就是一个可选的选择了


对于存储数据来说,直接存在变量中,往往是更快速、更方便的选择,但是若放在分布式系统中,直接定义变量就不行了

  • 因为你定义的变量是在你当前服务器进程中的一块空间
  • 进程具有隔离性,每个进程之间都是被隔离开的,进程 A 无法读取进程 B 中的数据
  • 如果是在分布式系统下,肯定会涉及到多个进程,甚至是在不同的主机上的多个进程,此时你想直接访问其他内存中的变量,这件事就变得困难起来了
    redis 就是针对上述的功能点进行了封装,既然没法突破进程的隔离性直接进行访问,那就使用“进程间通信“,网络 就是其最主流方案

网络既可以让同一个主机间的进程进行通信,而且还可以让不同主机之间的进程进行通信,因此,redis 就相当于是基于网络,能够把自己内存中的的变量给别的进程、甚至别的主机的进程进行使用

实现数据库

redis 还被一些人当做数据库来使用

常见的 MySQL 最大的问题在于:访问的速度比较慢
在很多互联网产品中,对性能要求是很高的,“”有时候就是一个很大的问题

redis 被当做数据库来使用的优点就在于:快,快很多

  • 核心在于它是用内存存储数据的,而 MySQL 的数据是在硬盘上的
  • 计算机访问内存的速度比访问硬盘的速度快几千上万倍 image.png|491

redisMySQL 相比,最大的劣势是:存储空间是有限的

  • 虽然有不少的互联网产品,对性能要求是很高的,就需要访问速度很快
  • 但更多的互联网产品对于性能的要求没那么高,同时又希望用更低的成本存更多的数据,显然 MySQL 是更好的选择,同时 MySQL 相比于 redis 来说,提供了更丰富的功能

实现缓存

那有没有存储空间又大,访问速度又快的方案呢?

  • 典型的方案就是把 redisMySQL 结合起来
  • 把热点数据(经常访问的数据)就用 redis 来存储,把全量数据就用 MySQL 来存储
  • “二八原则”,20% 的热点数据能满足 80% 的访问需求

这就是缓存的机制,不过这样系统的复杂程度就会大大提高。而且,如果数据发生修改,还会涉及到 redisMySQL 之间的数据同步问题

实现消息中间件

redis 的初心,就是作为一个“消息中间件”(消息队列),实现分布式系统下的生产者消费者模型
但当前很少会直接使用 redis 作为消息中间件,因为业界中有更多更专业的消息中间件可以使用

分布式系统

千万不要把所谓的“分布式”想的太复杂,太高大上…

单机架构

image.png|591
此处假定是一个“电商网站”,用户通过网络访问这个服务器,其分为两个部分:

  1. 应用服务:我们写的服务器程序

    • 就是说用户打开这个网站,页面上要能显示商品信息,点进去能看到详情,能下单… 这些预计的功能就是通过这个“应用服务器/HTTP服务器这样的程序”来支撑的
    • C++ 里面的 cpp-hyyplib
    • Java 里面的 Spring
    • 这俩都是用来写 HTTP 服务器的
  2. 数据库服务:

    • 用来存储这个网站中大量的数据
    • 可以使用 MySQL
      • MySQL 是一个“客户端-服务器“结构的程序,本体是 MySQL 服务器(存储和组织数据的部分)
      • 上面的 HTTP 应用服务服务器作为客户端,去读写数据库服务
  • 当用户现在查看商品列表,那么应用服务器(HTTP 服务器) 就会发送请求给 MySQL 服务器,然后 MySQL 查找数据之后将数据返回给应用程序,最后应用程序通过 HTTP 协议,最终将信息返回给用户

绝大部分的公司的产品都是这种单机架构。因为现在的计算机硬件发展速度是非常快的,这就意味着哪怕我们只有一台主机,这一台主机的性能也是非常高的,可以支持非常高的并发,非常大的数据存储

如果业务进一步增长,用户量和数据量都水涨船高,当一台主机难以应付的时候,就需要引入更多的主机,引入更多的硬件资源,就需要使用分布式系统了

为什么数据多了主机就难以应对 ?

一台主机的硬件资源是有上限的,包括但不限于一下几种:

  • CPU
  • 内存
  • 硬盘
  • 网络

  • 服务器每次收到一个请求,都是需要消耗上述的一些资源的~~
    如果同一时刻处理的请求多了,此时就可能会导致某个硬件资源不够用了,无论是那个方面不够用了,都可能会导致服务器处理请求的时间变长,甚至于处理出错

如果我们真的遇到了这样的服务器不够用的场景,我们可以:

  1. 开源
  • 简单粗暴,直接增加更多的硬件资源(什么不够补什么)
  • 不过一个主机上面能增加的硬件资源也是有限的,取决于主板的扩展能力
  1. 节流(软件上优化)
  • 针对程序进行优化,优化代码(各凭本事)
  • 通过性能测试,找到是哪个环节出现了瓶颈,再对症下药
  • 操作起来很难!对程序员的水平要求比较高

分布式系统

当一台主机扩展到极限了,但是还不够,就只能引入多台主机了

但不是说买来的新的机器直接就可以解决问题,也需要软件上做出对应的调整和适配。当引入多台主机了,我们的系统就可以称为“分布式系统”了

引入分布式系统万不得已的,系统的复杂程度会大大大提高(指数增长),这样出现 bug 的概率就越高、加班的概率就越大、丢失年终奖的概率也随之提高

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2110741.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何看待AI技术对人们生活的影响?

人工智能(AI)技术对人们生活的影响是多方面的,既有积极的一面,也存在一些需要关注的问题。以下是对AI技术在生活中影响的综合看法: 积极影响: 提高效率:AI技术在各行各业中的应用大大提高了工作…

14,子查询语句嵌套

1.1 查询研发部门的所有员工信息 #步骤1: 查询研发部门的 did SELECT did FROM t_department WHERE dname 研发部; #步骤2: 嵌套子查询,查询员工信息 SELECT * FROM t_employee WHERE did (SELECT did FROM t_department WHERE dname 研发部); 1.1 查询和白露性别和部门相…

Splashtop 在 Gartner Peer Insights™ 远程桌面软件客户之声评选中荣获“卓越表现者”称号

2024年9月4日 加利福尼亚州库比蒂诺 远程解决方案提供商 Splashtop 今天宣布,在最新发布的《2024年 Gartner Peer Insights™ 远程桌面软件客户之声》报告中,Splashtop 荣获“卓越表现者”称号。进入“卓越表现者”象限,意味着 Splashtop 的…

基于 Python 的 LIF 模型:探索神经元同步与小世界网络

在神经科学中,理解神经元之间的同步行为对解释大脑的功能非常重要。而泄漏积分发放(Leaky Integrate-and-Fire, LIF)模型作为一种经典的神经元模型,广泛应用于模拟神经元的膜电位变化以及脉冲发放。本篇博客将带你通过Python代码&…

大眼橙X7D Ultra和当贝D6X Pro选哪个好?三千价位,谁的性价比更高

在投影仪市场的激烈竞争中,3000多价位一款新产品问世,大眼橙X7D Ultra作为新款备受瞩目,与其对应的同价位佼佼者当贝D6X Pro都各自以其独特的优势吸引着消费者的目光。今天就来说说这款新品大眼橙X7D Ultra对比当贝D6X Pro有哪些不同之处&…

iOS 18beta/正式版升级办法分享

随着科技的飞速发展,苹果公司每一次的iOS系统更新都为我们带来了前所未有的便捷与惊喜。如今,iOS 18的发布再次激起了广大iPhone用户的升级热情。为了让大家能够顺利、高效地升级到这一全新系统,今天我将为大家分享几种实用的升级iOS 18的方法…

展会回顾 | SunTorque智能扭矩系统亮相GAF2024展览会,收获满满

9月,一个收获的季节, GAF 2024全球紧固—连接—装配技术大会暨展览会就在这样一个美好的季节中,在苏州花桥国际博览中心完美落幕。这场汇聚了全球顶尖技术与创新理念的盛会,不仅吸引了来自全国各地的制造商、科技巨头及行业精英&a…

电脑桌面整理怎么弄?分享8款桌面整理软件,轻松拿捏桌面美化!

电脑桌面是我们日常工作和学习中最常接触到的地方,但随着时间的推移,桌面上往往会堆积越来越多的文件和图标。这不仅让桌面看起来杂乱无章,也使得寻找特定文件变得困难,从而影响了工作和学习的效率。那么,如何有效整理…

Embedding模型提升效果的方法之二:SimCSE

0. 前言 SimCSE是通过对比学习的方式缓解预训练模型的各向异性问题,各向异性的产生原因在上一篇文章中已有介绍。SimCSE是2021年出的,后面出的 embedding 模型几乎都使用了对比学习来缓解预训练语言模型的各向异性问题。前面介绍的几篇文章无一例外使用…

1-2宿主环境

什么是宿主环境 指的是程序运行所必须的依赖环境。Android系统和ios系统是两个不同的宿主环境,安卓版的app是不能在ios系统上运行的。 小程序的宿主环境 🍕🍕🍕 -手机微信是小程序的宿主环境 通信的主体 🍔&…

使用百度飞桨PaddleOCR进行OCR识别

1、代码及文档 代码:https://github.com/PaddlePaddle/PaddleOCR?tabreadme-ov-file 介绍文档:https://paddlepaddle.github.io/PaddleOCR/ppocr/overview.html 2、依赖安装 在使用过程中需要安装库,可以依据代码运行过程中的提示安装。…

高效实用的网站ICP备案查询接口

随着互联网的日益发展,对于网站的监管变得越来越重要。为了更好地管理和监督互联网上的网站,官方要求所有在中国境内的网站都需要进行ICP备案。因此,ICP备案不仅是法律要求,也是衡量一个网站是否正规的重要标志之一。为了便于开发…

开题报告撰写的四大难点与应对策略

AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 对于每个即将进入毕业论文阶段的学生来说,开题报告是一道必经的门槛。开题报告不仅决定了你的论文方向,还对后续的研究和写作起到重要的引导作用。 然而,许多学生在撰写…

什么是车端、站端、电池端换电连接器?

材料选择与导电性能 换电连接器首先需要承受大电流、高电压的传输,因此其材料选择至关重要。为了确保电力传输的高效与稳定,大多数换电连接器采用高导电性材料,如铜材或更先进的合金材料。这些材料不仅具有优异的导电性能,还能在…

pdf在线转换成word免费版,一键免费转换

在日常的学习和办公中,PDF文件和Word文档是我们离不开的两种最常见的文件,而PDF与Word文档之间的转换成为了我们日常工作中不可或缺的一部分。无论是为了编辑、修改还是共享文件,掌握多种PDF转Word的方法都显得尤为重要。很多小伙伴关心能不能…

轻量级模型解读——EfficientNet系列

EfficientNet自2019年谷歌提出以来,经历了三个版本,2019EfficientNet ——> 2020EfficientNet-Lite——> 2021EfficientNetv2 文章目录 1、EfficientNet2、EfficientNetv23、EfficientNet-Lite 对于EfficientNet和EfficientNetv2的解读可见另外两篇…

10Python的Pandas:样式Style

Pandas 提供了多种样式选项,可以让你对数据框的显示进行格式化。这些样式可以帮助突出显示数据中的某些元素、设置颜色、格式化数字等。以下是一些常用的 Pandas 样式示例: 1. 基本样式设置 要为整个数据框应用样式,可以使用 style 属性。例…

智 能 合 约

1. 智能合约的历史 智能合约最初是由 Nick Szabo 在 20 世纪 90 年代后期的一篇名为 Formalizing and Securing Relationships on Public Networks(《公共网络上关系的格式化和安全保护》)的文章中提出的,但是 20 年之后,比特币的发明和区块链…

WebAPI (一) 基本认知;querySelector选取dom对象;操作元素属性、表单属性;自定义属性;定时器之间歇函数

文章目录 Web API基本认知一、 变量声明二、 DOM1. DOM 树2. DOM对象3. 获取DOM对象(1)、选择匹配的第一个元素(2)、选择匹配多个元素 三、 操作元素1. 操作元素内容2. 操作元素属性(1)、常用属性(href之类的)(2)、通过style属性操作CSS(3)、通过类名(cl…

简单比较 http https http2,我们要如何把http升级为https

🧑‍💻 写在开头 点赞 收藏 学会🤣🤣🤣 什么是HTTP 超文本传输​​协议(HTTP)是用于传输诸如HTML的超媒体文档的应用层协议。它被设计用于Web浏览器和Web服务器之间的通信,但它也…