认识 Redis 与 分布式

news2025/1/17 4:11:17

Redis 官网页面

Redis官网链接

在这里插入图片描述



Redis 的简介

Redis 是一个在内存中存储数据的中间件
一方面用于作为数据库,另一方面用于作为数据缓存,适用于分布式系统中
Redis 基于网络,进行进程间通信,把自己内存中的变量给别的进程,甚至别的主机的进程进行使用

在这里插入图片描述

Redis 的初心: 是用来作为一个 “消息中间件” (消息队列)的,用于分布式系统下的生产者消费者模型,不过当前很少会直接使用 Redis 作为消息中间件了

Redis 通常和 MySQL 结合起来使用

MySQL 最大的问题在于,访问速度比较慢,很多互联网产品中,对于性能要求是很高;
Redis 可以作为数据库使用,最大的特点就是访问速度快!但是和 MySQL 相比,最大的劣势,就是存储空间有限;
通常情况下,最优的选择就是Redis 和 MySQL 的结合使用,当然还是要看使用场景的。

具体的使用原则采用“二八原则”:20%的热点数据,满足80%的访问需求



分布式系统

引入多个主机/服务器,协同配合完成一系列的工作
如 Web 服务器与数据库分别⼯作在不同的服务器上,或者多台 Web 服务器被分别部署在不同服务器上。
注:这里多个主机指的是物理上的多个主机

分布式的架构演进

请各位亲们,移步到博主的另一篇博客: docker 的八大技术架构(图解)

在这里插入图片描述

常见概念

应⽤(Application)/ 系统(System)
一个应用,就是一 个/组 服务器程序

模块(Module)/ 组件(Component)
—个应目里面有很多个功能,每个独立的功能,就可以称为是一个模块/组件

集群(Cluster)
引入多个主机/服务器,协同配合完成一系列的工作
注:这里的多个主机指的是逻辑上的多个主机

分布式 和 集群的区别:
分布式强调的是物理形态,即⼯作在不同服务器上并且通过⽹络通信配合完成任务;
⽽集群更在意逻辑形态,即是否为了完成特定服务⽬标。

主(Master)/ 从(Slave)
分布式系统中一种比较典型的结构:多个服务器节点,其中一个是主,另外的都是从。
从节点的数据要从主节点这里同步过来

中间件(Middleware)
提供和业务无关的服务的软件,比如:数据库;缓存;消息队列

评价指标(Metric)

  • 可用性(Availability): 系统整体可用的时间 / 总的时间
  • 响应时长(Response Time RT): 衡量服务器的性能,和具体服务器要做的业务密切相关的,数值越小越好
  • 吞吐(Throughput)vs 并发(Concurrent): 衡量系统的处理请求的能力,也是属于衡量性能的一种方式



Redis 的特性

官网核心特性的介绍页面
在这里插入图片描述

1. In-memory data structures

在内存中存储数据
在这里插入图片描述

MySQL 主要是通过“表"的方式来存储组织数据的,属于"关系型数据库";
Redis 主要是通过“键值对"(key 都是 string, value 则是上述的strings, hashes, lists, sets, sorted sets, streams)
的方式来存储组织数据的,属于"非关系型数据库"

2. Programmability

可编程性
在这里插入图片描述
针对Redis的操作,可以直接通过简单的交互式命令进行操作,也可以通过一些脚本的方式,批量执行一些操作(可以带有一些逻辑),在 Redis 主要支持 Lua(“橹啊”)这个编程语言

3. Extensibility

扩展
在这里插入图片描述
可以在 Redis 原有的功能基础上再进行扩展,Redis 提供了一组API,可以使用 C,C++,Rust 这几个语言编写 Redis 扩展(本质上是一个动态链接库)
自己去扩展 Redis 的功能,在 Redis 自身已经提供了很多的数据结构和命令下,可以通过扩展,让 Redis支持更多的数据结构以及支持更多的命令

4. Persistence

持久化

在这里插入图片描述
Redis 把数据存储在内存上的,由于内存的数据是“易失"的,进程退出/系统重启都会导致内存中的数据消失
解决:Redis 会把数据存储在硬盘上,以内存为主,硬盘为辅(硬盘相当于对内存的数据备份了一下);
如果 Redis 重启了,就会在重启时加载硬盘中的备份数据使 Redis 的内存恢复到重启前的状态

5. Clustering

在这里插入图片描述
Horizontal scalability:水平扩展,这个水平扩展,类似于"分库分表";
Redis 作为一个分布式系统中的中间件,能够支持集群是很关键的;
一个 Redis 能存储的数据是有限的(内存空间有限),引入多个主机,部署多个 Redis 节点,每个 Redis 节点存储数据的一部分

6. High availability

高可用 => 冗余/备份
Redis 自身也是支持"主从”结构的,从节点就相当于主节点的备份
在这里插入图片描述

Redis 最大的特性:快

快的原因:
1.Redis 数据是在内存中,比访问硬盘的数据库,要快很多
2.Redis 核心功能都是比较简单的逻辑 => 核心功能都是比较简单的操作内存中的数据结构
3.从网络角度上,Redis 使用了 IO 多路复用(epoll)的方式:使用一个线程来管理很多个socket
4.Redis 使用的是单线程模型(虽然更高版本的Redis引入了多线程),这样的单线程模型,减少了不必要的线程之间的竞争开销

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

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

相关文章

Redis中的复制功能(五)

心跳检测 概述 在命令传播阶段&#xff0c;从服务器默认会以每秒一次的频率&#xff0c;向主服务器发送命令: REPLCONF ACK < replication_offset >其中replication_offset是从服务器当前的复制偏移量。 发送REPLCONF ACK命令对于主从服务器有三个作用: 1.检测主从服…

prompt 工程案例

目录 prompt 工程是什么&#xff1f; 案例 vllm 推理加速框架 prompt 工程是什么&#xff1f; prompt&#xff1a;提示词&#xff0c;也就是我们使用网页版输入给大模型的内容就叫 prompt&#xff0c;那什么是 prompt 工程呢&#xff1f; 简单理解其实就是利用编写的 prom…

Spark-Scala语言实战(12)

在之前的文章中&#xff0c;我们学习了如何在spark中使用键值对中的join,rightOuterJoin,leftOuterJoin三种方法。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢…

数据结构课堂考勤管理系统

摘要 高校的不断扩张让在校学生数量不断的增加&#xff0c;对于教师和管理人员的需求也在不断地增强&#xff0c;对日常的学生考勤管理的工作量也在日益增加&#xff0c;传统的人工点名签到的考勤管理模式已经给无法适用于当前高校考勤管理的需求&#xff0c;同时手动录入的考…

Spring重点知识(个人整理笔记)

目录 1. 为什么要使用 spring&#xff1f; 2. 解释一下什么是 Aop&#xff1f; 3. AOP有哪些实现方式&#xff1f; 4. Spring AOP的实现原理 5. JDK动态代理和CGLIB动态代理的区别&#xff1f; 6. 解释一下什么是 ioc&#xff1f; 7. spring 有哪些主要模块&#xff1f;…

使用c语言libexpat开源库解析XML数据

1 libexpat简介 Expat 是一个用 C 语言编写的开源 XML 解析库&#xff0c;以其高性能和小巧的体积著称。Expat 兼容多种操作系统平台&#xff0c;包括但不限于 Windows、Linux、macOS 等。由于其跨平台特性和简单易用的API&#xff0c;Expat 成为了许多C/C程序员解析XML文档的…

【项目实战】【Docker】【Git】【Linux】部署V2rayA项目

今天着手了一个全新领域的项目&#xff0c;从完全没有头绪到成功运行&#xff0c;记录一下具体的部署流程 github项目链接V2rayA 一开始拿到以后完全没有抓手&#xff0c;去阅读了一下他的帮助文档 写着能用docker运行&#xff0c;就去下载了一个Docker配置了一下 拉取代码到…

LeetCode-543. 二叉树的直径【树 深度优先搜索 二叉树】

LeetCode-543. 二叉树的直径【树 深度优先搜索 二叉树】 题目描述&#xff1a;解题思路一&#xff1a;DFS解题思路二&#xff1a;另一种写法DFS解题思路三&#xff1a;0 题目描述&#xff1a; 给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任…

【35分钟掌握金融风控策略3】场景概述3

目录 ​编辑 场景概述 贷前、贷中、贷后的划分及对应的风控场景 贷前风控场景简介 预授信 授信审批 定额 定价 人工审核 场景概述 贷前、贷中、贷后的划分及对应的风控场景 在金融风控全生命周期中&#xff0c;贷前主要是指授信成功及之前的阶段、贷中主要是指授信成…

ubuntu18.04图形界面卡死,鼠标键盘失灵, 通过MAC共享网络给Ubuntu解决!

ubuntu18.04图形界面卡死&#xff0c;鼠标键盘失灵&#xff0c; 通过MAC共享网络给Ubuntu解决&#xff01; 1. 尝试从卡死的图形界面切换到命令行界面2. 进入bios和grub页面3. 更改Grub中的设置&#xff0c;以进入命令行4. 在命令行页面解决图形界面卡死的问题5. Mac共享WI-FI网…

【QT+QGIS跨平台编译】056:【pdalcpp+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、pdalcpp介绍二、pdal下载三、文件分析四、pro文件五、编译实践一、pdalcpp介绍 pdalcpp 是 PDAL(Point Data Abstraction Library)的 C++ 接口,它允许开发人员在他们的 C++ 项目中直接使用 PDAL 的功能和特性。PDAL 是一个开源的库,用于处理…

探索未来外贸电商系统的创新架构

在全球化、数字化的时代背景下&#xff0c;外贸电商行业呈现出蓬勃发展的态势。为了适应市场竞争的激烈和用户需求的多样化&#xff0c;外贸电商系统的架构设计显得尤为重要。本文将深入探讨未来外贸电商系统的创新架构&#xff0c;以期为行业发展提供新的思路和方向。 随着全…

IDEA2023.1.1中文插件

1.启动IDEA 选中Customize 2.选择All settings 3.选中Plugins,再搜索栏里输入Chinese,找到 "Chinese (Simplified) Language"插件&#xff0c;点击 Install 进行安装。 4. 安装完成后&#xff0c;重启IntelliJ IDEA&#xff0c;即可看到界面语言已经变为中文。

Java 开发者必备:JDK 版本详解与选择策略(含安装与验证)

1. JDK 版本 (Oracle Java SE 支持路线图) 数据来源&#xff1a;Oracle Java SE 支持路线图 | 甲骨文中国: https://www.oracle.com/cn/java/technologies/java-se-support-roadmap.html 版本GA DatePremier Support UntilExtended Support Until&#xff08;限 LTS&#xff09…

[C#]OpenCvSharp改变图像的对比度和亮度

目的 访问像素值mat.At<T>(y,x) 用0初始化矩阵Mat.Zeros 饱和操作SaturateCast.ToByte 亮度和对比度调整 g(x)αf(x)β 用α(>0)和β一般称作增益(gain)和偏置(bias)&#xff0c;分别控制对比度和亮度 把f(x)看成源图像像素&#xff0c;把g(x)看成输出图像像素…

如何利用待办事项清单提高工作效率?

你是否经常因为繁重的工作量而感到不堪重负&#xff1f;你是否在努力赶工期或经常忘记重要的电子邮件&#xff1f;你并不是特例。如何利用待办事项清单提高工作效率&#xff1f;这里有一个简单的方法可以帮你理清混乱并更高效地完成任务—待办事项清单。 这种类型的清单可以帮…

基于机器学习的木马检测模型的设计与实现(论文)_kaic

摘 要 科技的发展带来了人们生活的改变&#xff0c;近年来我国网民已突破十亿人口&#xff0c; 而且在后疫 情时代&#xff0c; 经历了疫情时期的一系列线上活动&#xff0c; 人们对网络的依赖比以往任何时期都要高 得多。高频次的上网行为也带来了一系列安全问题&#xff…

FPGA实现Canny算法(Verilog)

在边缘检测算法里面Sobel是比较简单的一个算法&#xff0c;但是其检测出来的边缘往往是比较粗的&#xff0c;效果不是很好&#xff0c;因为我们最理想的边缘肯定就是一个宽度为1的细线。 Canny算法在此基础上进行了改进&#xff0c;通过使用边缘的梯度信息进行非最大值抑制(NM…

面向作家的 ChatGPT 教程

原文&#xff1a;ChatGPT for authors 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 介绍我坐在电脑前几个小时&#xff0c;盯着一张空白的 Word 文档。文字就是无法流畅地表达出来。这并不是什么新鲜事&#xff1b;称之为写作障碍&#xff0c;称之为缺乏灵感&#x…

大创项目推荐 深度学习 python opencv 火焰检测识别

文章目录 0 前言1 基于YOLO的火焰检测与识别2 课题背景3 卷积神经网络3.1 卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV54.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 数据集准备5.1 数…