1.初识redis

文章目录

  • 1.认识redis
    • 1.1 mysql和redis 对比
    • 1.2分布式系统
      • 1.2.1单机架构与分布式架构
      • 1.2.2数据库分离(应用服务器和存储服务器分离)与负载均衡
      • 1.2.3负载均衡器
      • 1.2.4 数据库读写分离
      • 1.2.5 数据库服务器引入缓存
      • 1.2.6数据库分库分表
      • 1.2.7 引入微服务
  • 2.常见概念解释
    • 2.1 应用(Application)/系统(System)
    • 2.2 模块(Module)/组件(Component)
    • 2.3 分布式(Distributed)
    • 2.4 集群(Cluster)
    • 2.5 主(Master)/从(Slave)
    • 2.6 中间件(Middleware)
    • 2.7可用性(Availability)
    • 2.8 响应时长(Response Time RT)
    • 2.9吞吐(Throughput) vs 并发 (Concurrent)
  • 3.总结

大家好,我是晓星航。今天为大家带来的是 初始redis 相关的讲解!😀

1.认识redis

Redis是一个 客户端-服务器 结构的程序。

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。

Redis 是在分布式系统中,才能发挥威力的~~

众所周知,进程是有隔离性的,进程间的通信要依赖网络。而我们的redis就是基于网络,可以把自己内存中的变量给别的进程使,甚至别的主机的进程进行使用。

如果只是单机程序,直接通过变量存储数据的方式是比使用 Redis 更优的选择

1.1 mysql和redis 对比

MySQL 最大的问题在于,访问速度比较慢~~
很多互联网产品中,对于性能要求是很高~~

但是redis访问速度很快,与mysql对比redis最大的劣势就是存储空间是很有限的。

那么怎么样可以使我们存储空间又大,访问速度又快呢?

典型的方案,可以把 Redis 和 MySQL 结合起来使用

引入的问题:系统的复杂程度大大提升了,而且如果数据发生修改,还涉及到redis和mysql之间的数据同步问题。

1.2分布式系统

1.2.1单机架构与分布式架构

单机架构:只有一台服务器,这个服务器负责所有的工作

假设这是一个电商网站

QQ_1722490289060

单机程序中,能不能把数据库服务器也去掉,光一个应用服务器又负责业务,又负责数据存储? (也不是不可以,但是就是会比较麻烦)

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

一台主机的硬件资源是有上线的!!!

QQ_1722490511202

如果我们真的遇到了这样的服务器不够用的场景,怎么处理呢?

1.开源 简单粗暴,增加更多的硬件资源 --> 一台主机拓展到极限了,但还是不够,那么就只能引入多台主机了(分布式)

2.节流 软件上优化。(各凭本事了,需要通过性能测试,找到是哪个环节出现了瓶颈,再去对症下药)

开源到上限引入多台主机(分布式),这是无奈之举,系统的复杂程度因此会大大提高 --> 出现bug的概率提高 --> 加班概率 & 丢失年终奖的概率 随之提高

1.2.2数据库分离(应用服务器和存储服务器分离)与负载均衡

QQ_1722491144526

1.机械硬盘,便宜,慢

2.固态硬盘,贵,快

引入更多的应用服务器节点

QQ_1722491369630

1.2.3负载均衡器

QQ_1722491699026

这里的负载均衡器,看起来承担了所有的请求,他能顶得住吗?

负载均衡器,对于请求量的承担能力,要远超于应用服务器。

负载均衡器,是领导,分配工作。

应用服务器,是组员,执行任务。

是否会出现,请求量大到负载均衡器也扛不住了呢?也是有可能的!!!

解决这个问题只需要引入更多的负载均衡器即可(引入多个机房)

我们这里的负载均衡器和应用服务器可以理解为学校的校长以及老师,校长类似于负载均衡器负责规划学校未来的发展,发布学校平时的活动。而老师就相当于应用服务器,实施校长发布的教学活动,并保证学生们的健康成长!

1.2.4 数据库读写分离

QQ_1722492167023

我们应用服务器变多了,那存储服务器只有一个会不会发生处理不过来呢?

答案是肯定的,因此我们把数据库服务器(存储服务器)也增加一个或者几个,并将读写分离开来,将他们分为主(master)数据库和从(slave)数据库。

我们之前数据库服务器只有一个,他既需要写入也需要读取操作。但现在我们拓展到两个数据库服务器,并把写操作和读操作分开到两个数据库服务器,这样我们数据库服务器的压力便会大大降低,从而达到可以处理更多数据的能力。

主服务器一般是一个,从服务器可以有多个(一主多从),同时从数据库通过负载均衡的方式,让应用服务器进行访问。

1.2.5 数据库服务器引入缓存

数据库天然有个问题,响应速度是更慢的!

把数据区分"冷热”,热点数据放到缓存中~缓存的访问速度往往比数据库要快很多了!

QQ_1722492674936

这里的缓存很小,因此他只能把频繁要访问的数据放进去

二八原则:20% 的人持有 80% 的财富~~~

计算机中的二八原则:

QQ_1722492714792

1.2.6数据库分库分表

引入分布式系统,不光要能够去应对更高的请求量(并发量),同时也要能应对更大的数据量

是否可能会出现,一台服务器已经存不下数据了呢?? 当然会存在!!!

虽然一个服务器, 存储的数据量可以达到 几十个 TB,即使如此也可能会存不下 短视频

一台主机存不下,就需要多台主机来存储

QQ_1722493182365

1.2.7 引入微服务

微服务架构

之前应用服务器,一个服务器程序里面做了很多的业务,这就可能会导致这一个服务器的代码变的越来越复杂

为了更方便于代码的维护,就可以把这样的一个复杂的服务器,拆分成更多的,功能更单一,但是更小的服务器

QQ_1722493588117

QQ_1722493598784

当应用服务器复杂了势必就需要更多的人来维护了,当人多了,就需要配套的管理,把这些人组织好

划分组织结构,分成多个组,每个组分别配备领导进行管理

分成多个组,就需要进行分工

引入微服务, 解决了人的问题,付出的代价?

1.系统的性能下降
(要想保证性能不下降太多,只能引入更多的机器,更多的硬件资源 => 充钱)

拆出来更多的服务,多个功能之间要更依赖 网络通信

网络通信的速度很可能是比硬盘还慢的!!!

2.系统复杂程度提高, 可用性收到影响

服务器更多了,出现问题的概率就更大了

这就需要一系列的手段,来保证系统的可用性
(更丰富的监控报警,以及配套的运维人员)

微服务的优势:

1.解决了人的问题

2.使用微服务,可以更方便于功能的复用

3.可以给不同的服务进行不同的部署

2.常见概念解释

2.1 应用(Application)/系统(System)

一个应用,就是一个/组 服务器程序

2.2 模块(Module)/组件(Component)

一个应用,里面有很多个功能. 每个独立的功能,就可以称为是一个 模块/组件

2.3 分布式(Distributed)

引入多个主机/服务器,协同配合完成一系列的工作.

物理上的多个主机

2.4 集群(Cluster)

引入多个主机/服务器,协同配合完成一系列的工作.

逻辑上的多个主机

2.5 主(Master)/从(Slave)

分布式系统中一种比较典型的结构

多个服务器节点,其中一个是主,另外的是从,从节点的数据要从主节点这里同步过来

2.6 中间件(Middleware)

和业务无关的服务(功能更通用的服务)

  1. 数据库
  2. 缓存
  3. 消息队列

2.7可用性(Availability)

系统整体可用的时间/总的时间

2.8 响应时长(Response Time RT)

衡量服务器的性能,越小越好

和具体服务器要做的业务密切相关

2.9吞吐(Throughput) vs 并发 (Concurrent)

衡量系统的处理请求的能力。衡量性能的一种方式

3.总结

QQ_1722576946275

QQ_1722576974283

8 响应时长(Response Time RT)

衡量服务器的性能,越小越好

和具体服务器要做的业务密切相关

感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞,你的每一次鼓励都是作者创作的动力哦!😘

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

音频导出后为什么效果变差了 FL Studio音频导出设置推荐

FL Studio是一款功能强大的编曲软件,除了可以编曲之外,FL Studio还支持各种音频格式导出。有的小伙伴在使用FL Studio导出音频后,会发现的导出的音频效果不理想,这很大的原因可能是导出设置不对造成的。下面给大家详细讲解&#x…

全面解析Gerapy分布式部署:从环境搭建到定时任务,避开Crawlab的坑

Gerapy分布式部署 搭建远程服务器的环境 装好带docker服务的系统 Docker:容器可生成镜像,也可拉去镜像生成容器 示例:将一个环境打包上传到云端(远程服务器),其他8个服务器需要这个环境直接向云端拉取镜像生成容器,进而使用该环境,比如有MYS…

代码块分类

局部代码块 public class Test {public static void main(String[] args) {{int a 10;}// 执行到此处时候,变量a已经从内存中消失了。 // System.out.println(a);} } 构造代码块 public class Test {private String name;private int age;{// 构造代码块System.out.…

GEC6818开发板的学习

1、开发板的简介 首先连接 开发板与电脑,需电脑安装串口驱动:例CH340 2、开发板的特性: 像素:800*480Pix分辨率:高,宽两个维度的像素点数目开发板色深为32位一个像素点占4个字节:分别为灰度保留位、RGB三原色各占一位3、为什么要内存映射 虽然LCD设备本质上也可以看作…

R语言:如何安装包“linkET”

自己在R语言中安装包“linkET”时报错不存在叫‘linket’这个名字的程辑包 尝试了install.packages("linkET")和BiocManager::install("linkET")两种安装办法都不行 >install.packages("linkET") WARNING: Rtools is required to build R pa…

【Java】对象与toString()方法

1.前言 了解toString之前,要先明白Object类是什么,Object是所有对象的父类。在Object类当中含有toString()方法,因此所有的对象也都包含有一个toString()方法。 2.toString 2.1 方法调用 toString()方法主要的作用,是对类与对象的…

错误信息“缺少msvcr120.dll”或“找不到msvcr120.dll”应该如何修复?几种方法快速修复

由于这个msvcr120.dll文件与应用程序的运行密切相关,任何与之相关的问题都可能导致应用程序无法正常运行。错误信息如“缺少msvcr120.dll”或“找不到msvcr120.dll”,通常出现在软件安装不正确或系统更新后。接下俩就教大家几种方法快速修复msvcr120.dll…

CentOS 7 安装流程详细教程

目录 前言1. CentOS 7 概述2. 安装环境准备2.1 硬件要求2.2 安装介质准备 3. CentOS 7 安装步骤3.1 引导安装程序3.2 选择语言和键盘布局3.3 配置安装源和软件包3.4 配置分区3.5 设置网络和主机名3.6 设置时间和日期3.7 设置 root 密码和创建用户3.8 开始安装并完成配置 4. 安装…

Cocos Creator2D游戏开发(14)---CocosCreator常用组件详解

Canvas RenderRoot2D 组件所在的节点是 2D 渲染组件数据收集的入口,而 Canvas(画布) 组件继承自 RenderRoot2D 组件,所以 Canvas 组件也是数据收集入口。所有 2D 渲染元素都必须作为 RenderRoot2D 的子节点才能被渲染。 Canvas还作为屏幕适配…

用基础项目来理解spring的作用

简介 spring官方的解释过于专业化,初学者可能比较难懂,接下来我将通过一个最基础的Java项目来尽可能的展示spring中的作用及spring的底层是如何来实现的。 项目结构 该项目是一个简单的JavaSE项目,没有maven或者tomcat等其他。只在控制台进…

《黑神话悟空》2024官方配置要求一览

黑神话悟空配置要求 1080P 高画质推荐6650xt和4060以上的显卡高画质 全景光追推荐4060 2k 高画质推荐4060ti/7700x以上的显卡 高画质全景光追推荐4070 4K 高画质推荐4070s起步 高画质全景光追推存4080S 一、官方配置要求一览 1、最低配置: 需要 64 位处理器和操作系…

什么是逃逸分析

如何快速判断是否逃逸就看方法内new的对象实体是否能够被外部方法进行调用 什么是逃逸分析 在java虚拟机中,对象是在java堆中分配内存的,这是一个普遍的常识。但是,有一种特殊情况,那就是如果经过逃逸分析(escape an…

[HDCTF 2023]Welcome To HDCTF 2023

方法一:找个炸弹死掉,flag就出现 方法二:查看页面源码,发现底部assets/js/game.js 复制后访问看到jsfuck编码 复制到控制台查看flag

功能测试与自动化测试详解

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 什么是自动化测试? 自动化测试是指利用软件测试工具自动实现全部或部分测试,它是软件测试的一个重要组成 部分,能完成许多手工测试无法实…

【数据结构入门】二叉树之堆的实现

文章目录 前言一、树1.1 树的概念1.2 树的相关概念 二、二叉树2.1 二叉树的概念2.2 特殊的二叉树2.3 二叉树的性质 三、堆3.1 堆的概念3.2 堆的性质3.3 堆的存储3.4 堆的实现3.4.1 堆的初始化3.4.2 堆的销毁3.4.1 堆向上调整算法3.4.2 堆向下调整算法3.4.3 堆的创建3.4.4 堆的插…

ID3算法详解:构建决策树的利器

目录 引言 ID3算法概述 算法基础 信息熵 ​编辑 信息增益 ID3算法步骤 决策树 概念: 核心: 节点 1. 根节点 2. 非叶子节点 3. 叶子节点 引言 在机器学习领域,决策树是一种非常流行的分类和回归方法。其中,ID3算法作为决策树算法…

尚品汇-网关过滤用户请求、登录流程(三十五)

目录: (1)用户认证与服务网关整合 (2)server-gateway网关配置 (3)在服务网关中判断用户登录状态 (4)登录流程 (1)用户认证与服务网关整合 实…

百度 测试|测试开发 面试真题|面经 汇总

百度测开 开发测试工程师 提前批一二三面面经 事业群:MEG base:北京 一面:2022.8.12 时长:50min 自我介绍 个人项目,我的项目是围绕着学校课程的项目来的,面试官就让我介绍这门课讲了些什么 &#xf…

构建实时数据仓库:流式处理与实时计算技术解析

目录 一、流式处理 请求与响应 批处理 二、实时计算 三、Lambda架构 Lambda架构的缺点 四、Kappa架构 五、实时数据仓库解决方案 近年来随着业务领域的不断拓展,尤其像互联网、无线终端APP等行业应用的激增,产生的数据量呈指数级增长,对海量数…

前端开发攻略---彻底弄懂跨域解决方案

目录 1、浏览器的同源策略 1.1 源 1.2 同源与非同源 1.3 同源请求与非同源请求 2、跨域受到的限制 3、注意点 4、CORS解决Ajax跨域问题 4.1 CORS概述 4.2 CORS解决简单请求跨域 4.3 简单请求与复杂请求 4.4 CORS解决复杂请求跨域 4.5 借助CORS库快速完成配置 5、JS…