认识 Redis 与 分布式
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引入了多线程),这样的单线程模型,减少了不必要的线程之间的竞争开销
相关文章:
认识 Redis 与 分布式
Redis 官网页面 Redis官网链接 Redis 的简介 Redis 是一个在内存中存储数据的中间件 一方面用于作为数据库,另一方面用于作为数据缓存,适用于分布式系统中 Redis 基于网络,进行进程间通信,把自己内存中的变量给别的进程…...
Linux初学(十二)AWK进阶
一、AWK 1.1 简介 AWK是Linux中重要的文本处理工具Linux三剑客只一处理的对象可以是一个具体的文件,也可以是一个命令的执行结果AWK按行读取文件,将每一行视为一条记录 案例一:获取系统中每个用户的uid 方法一:cat /etc/passwd |…...
文字识别 Optical Character Recognition,OCR CTC STN
文字识别 Optical Character Recognition,OCR 自然场景文本检测识别技术综述 将图片上的文字内容,智能识别成为可编辑的文本。 场景文字识别(Scene Text Recognition,STR) OCR(Optical Character Recognition, 光学字符识别)传统上指对输入扫描文档图像进行分析处理,识…...
四、MySQL读写分离之MyCAT
一、读写分离概述 1、什么是读写分离: 读写分离:就是将读写操作分发到不同的服务器,读操作分发到对应的服务器 (slave),写操作分发到对应的服务器(master) ① M-S (主从) 架构下&…...
通讯录项目实现
引言:通过顺序表的逻辑实现通讯录。这里就不讲关于顺序表的函数了。如果有不明白的可以看我写的顺序表的博客。 目录 顺序表与通讯录的比较 各源文件文件大榄 Contact.c中通讯录相关函数的定义 初始化和销毁通讯录 添加联系人: 删除联系人…...
xss相关知识点与绕过思路总结
前言 对xss的绕过进行了系统的学习与实践后,重新审视一下xss,对他的绕过进行一个总结。 (当然我也是个小白,这些也是我当时瞎鸡儿乱搞绕过了几个xss自己做的小总结) 可能有点丑陋,献丑了。 好博客推荐 …...
深入解析语言模型:原理、实战与评估
引言 随着人工智能的飞速发展,语言模型作为自然语言处理(NLP)的核心技术之一,日益受到业界的广泛关注。本文旨在深入探讨语言模型的原理、实战应用以及评估方法,帮助读者更好地理解和应用这一技术。 一、语言模型原理…...
Elasticsearch 的索引优化常规项
优化常规项 https://blog.csdn.net/bairo007/article/details/132019575 1、按实际情况适当调整主分片的数量 如果主分片数量太少,会导致每个分片中的数据量过大,而且无法利用集群中所有节点的计算资源。如果主分片数量太多,会导致索引过度…...
【JavaParser笔记01】JavaParser解析Java源代码中的类信息(javadoc注释、类名称)
这篇文章,主要介绍如何使用JavaParser解析Java源代码中的类信息(javadoc注释、类名称)。 目录 一、JavaParser依赖库 1.1、引入依赖 1.2、获取类注释信息...
Stable Diffusion扩散模型【详解】小白也能看懂!!
文章目录 1、Diffusion的整体过程2、加噪过程2.1 加噪的具体细节2.2 加噪过程的公式推导 3、去噪过程3.1 图像概率分布 4、损失函数5、 伪代码过程 此文涉及公式推导,需要参考这篇文章: Stable Diffusion扩散模型推导公式的基础知识 1、Diffusion的整体…...
关于rabbitmq的prefetch机制
消息预取机制(Prefetch Mechanism)是RabbitMQ中用于控制消息传递给消费者的一种机制。它定义了在一个信道上,消费者允许的最大未确认的消息数量。一旦未确认的消息数量达到了设置的预取值,RabbitMQ就会停止向该消费者发送更多消息…...
机器学习介绍
机器学习是人工智能(AI)的一个分支,它使计算机系统能够从数据中学习并改进它们的性能。机器学习的核心在于开发算法,这些算法可以从大量数据中识别模式和特征,并用这些信息来做出预测或决策,而无需进行明确…...
OpenCV4.9开发之Window开发环境搭建
1.打开OpenCV所在github地址 2.点击opencv仓库,进入仓库详情,点击右下方的OpenCV 4.9.0进入下载页面 3.点击opencv-4.9.0-windows.exe下载 开始下载中... 下载完成 下载完成后,双击运行解压,默认解压路径,修改为c:/...
DDD 中的实体和值对象有什么区别?
在DDD中,实体 Entity 和值对象 Value Object 是两个基本的概念,它们之间有一些重要的区别。 唯一性:实体是唯一的,每个实体都有一个唯一的标识符,即使它的属性在一段时间内发生了变化,它仍然是这个实体。与…...
算法-最值问题
#include<iostream> using namespace std; int main() {int a[7];//上午上课时间int b[7];//下午上课时间int c[7];//一天总上课时间for (int i 0; i < 7; i) {cin >> a[i] >> b[i];c[i] a[i] b[i];}int max c[0];//max记录最长时间int index -1;//索…...
Go 性能压测工具之wrk介绍与使用
在项目正式上线之前,我们通常需要通过压测来评估当前系统能够支撑的请求量、排查可能存在的隐藏bug;压力测试(压测)是确保系统在高负载情况下仍能稳定运行的重要步骤。通过模拟高并发场景,可以评估系统的性能瓶颈、可靠…...
数学思想论(有目录)
数学思想是数学发展过程中的重要指导原则,它涉及对数学概念、方法和理论的理解和认识,以及如何利用这些工具来解决实际问题。数学思想的形成和演进是随着数学的发展而逐渐深化的,它体现了人类对数学本质和应用的不断探索和思考。 一些主要的数学思想包括: 函数与方程思想…...
C++的并发世界(五)——线程状态切换
0.线程状态 初始化:该线程正在被创建; 就绪:该线程在列表中就绪,等待CPU调度; 运行:该线程正在运行; 阻塞:该线程被阻塞挂机,Blocked状态包括:pendÿ…...
C语言——指针
地址是由物理的电线上产生的,能够标识唯一一个内存单元。在C语言中,地址也叫做指针。 在32位机器中,有32根地址线。地址是由32个0/1组成的二进制序列,也就是用4个字节来存储地址。 在64位机器中,有64根地址线。地址是…...
手搓二分查找
第一种: 该种方法是若a[mid]目标数,则让r一直等于mid,让l往右移动,一直移动到rl,这时候跳出循环,在循环外判断 但是不能写成让lmid,让r往左移动,比如a[2]key,这时&#x…...
Webots R2021a搭配Anaconda环境:从SSL报错到Python API调通的完整避坑指南
Webots R2021a与Anaconda环境深度整合:Python控制器开发全流程解析 当机器人仿真与Python开发环境相遇时,Webots和Anaconda的组合为研究者提供了强大工具链。然而,从环境配置到API调用的完整流程中,开发者常会遇到各种"坑点&…...
梦幻动漫魔法工坊:5分钟零基础搭建,小白也能生成专属二次元头像
梦幻动漫魔法工坊:5分钟零基础搭建,小白也能生成专属二次元头像 想不想拥有一个独一无二的二次元头像,却苦于不会画画?或者想为你的游戏角色、小说人物创造一个生动的形象,却找不到合适的画师?今天&#x…...
OpenClaw语音交互扩展:百川2-13B+Whisper实现语音指令控制
OpenClaw语音交互扩展:百川2-13BWhisper实现语音指令控制 1. 为什么需要语音交互能力 去年冬天的一个深夜,我正在调试OpenClaw的自动化脚本,双手因为长时间敲键盘已经有些僵硬。突然想到:如果能让AI听懂我的语音指令直接执行任务…...
终极指南:使用OpenCore Legacy Patcher为老旧Mac安装最新macOS系统
终极指南:使用OpenCore Legacy Patcher为老旧Mac安装最新macOS系统 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还在为老旧Mac无法升级最新系统而烦恼吗&am…...
大语言模型训练中的显存占用与优化方法简述
在进行大语言模型(LLM)的微调或预训练时,显存(VRAM)不足通常是首要面临的问题。为了在有限的硬件资源下完成训练,了解显存的具体去向以及相应的优化技术是比较基础的工作。 从模型训练的流程来看ÿ…...
Android13 PendingIntent Flags: Choosing Between FLAG_IMMUTABLE and FLAG_MUTABLE for Optimal Performa
1. Android13 PendingIntent的Flags变革解析 最近在将项目从Android11迁移到Android13时,我遇到了一个典型的兼容性问题:Targeting S (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a Pendin…...
指尖藏趣,抽享惊喜——扭蛋机抽赏盲盒小程序前端功能详解
抽赏盲盒所带来的未知惊喜与收集乐趣,深受不同年龄段用户的喜爱,扭蛋机抽赏盲盒小程序则打破线下场景限制,让这份乐趣随时可及。该小程序前端功能以“简约操作、趣味体验”为核心,聚焦用户可直接操作的功能板块,简化流…...
告别拉伸变形!保姆级教程:为你的Unity Windows应用添加自定义窗口比例限制器
Unity Windows应用窗口比例锁定全攻略:从原理到避坑指南 你是否遇到过这样的尴尬场景——精心设计的UI在用户随意拉伸窗口后变得面目全非?作为Unity开发者,我们常常需要为Windows平台构建专业级应用,而窗口比例控制正是提升用户体…...
焕新Windows资源管理器:打造惊艳毛玻璃视觉体验
焕新Windows资源管理器:打造惊艳毛玻璃视觉体验 【免费下载链接】ExplorerBlurMica Add background Blur effect or Acrylic (Mica for win11) effect to explorer for win10 and win11 项目地址: https://gitcode.com/gh_mirrors/ex/ExplorerBlurMica 每天面…...
三菱PLC与MCGS组态农田智能灌溉系统:后发送产品包括梯形图原理图、IO分配及组态画面解析
基于三菱PLC和MCGS组态农田智能灌溉系统 我们主要的后发送的产品有,带解释的梯形图接线图原理图图纸,io分配,组态画面上周刚把农田智能灌溉的项目收尾,把资料打包发给客户的时候,终于能瘫在椅子上喝杯冰可乐了。这个…...
