Redis -- 基础知识1
1.介绍
1.初识Redis
Redis:The open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker.
in-memory data:在内存中存储,Redis是在分布式系统中存储起作用的
解释:1.要清楚在单机下就能完成所有的任务时,Redis并没有用,因为可以直接存储变量进行访问。2.在分布式系统中,由于每一个进程之间有隔离性,那么想要把内存中的变量分享给别的主机其实得由网络传输。所以Redis就是以网络为基础,把自己内存中的变量交给其他主机进程能得到变量,达到共享使用。
database:提供数据库的功能
解释:1.MySQL可以提供数据库功能,但它也有缺点,就是效率慢,想要达到一个更快的性能那么就不太合适了。Redis作为数据库比MySQL快,这是因为Redis用内存存储,而MySQL存储在硬盘上。2.Redis的存储内存比MySQL小,所以对于海量数据不适用。
cache:把Redis作为cache来使用。
解释:1.将热点数据存储在Redis中,其他数据存储在MySQL中存储,这样达到了性能快存储多的结果。2.但是这个系统的复杂程度变麻烦了,并且数据修改时要涉及到Redis和MySQL的数据同步问题
streaming engine:作为消息中间件(消息队列),为生产消费者模型。当前很少使用。
分布式是关键。
2.分布式的基本架构
1. 单机模型
就是字面意思,由一台主机或者一个服务器实现所有的功能模块,其中这些模块自然就共同使用上面的所有资源。cpu,内存,寄存器,硬件等等。那么只要运行的东西够多,那么至少会有一个主机资源吃紧导致整体的效率低了,那么就想要进行优化。
1.开源:对吃紧的资源进行物理方面的扩充,加钱就行,不过这也有极限,一个主机最多也就能放那么老些东西
2.节流:需要有更强的数据结构和算法来疏通,这种情况会花费更多的精力和思路去编写代码
2.数据库分离模型
MySQL其实在主机上就是以一个服务器形式存在,我们使用客户端对数据库进行访问。那么可以将执行的应用与用于存储的数据库进行分离,那么此时可以将这两放到不同的服务器中去。那么此时为了增加利用率。应用服务器可以适当升级cpu和内存,而数据库服务器增加硬件,必要时使用SSD硬盘来存储大量数据。
3.应用服务器的集群架构与负载均衡
引入更多的应用服务器,用户请求增加会比较吃cpu和内存的资源,大量用户就需要有更多的应用服务器。用户将请求发送给负载均衡器,负载均衡器通过负载均衡的算法将请求较为均匀的分发给应用服务器群中,降低应用服务器承当的压力。其思路与多线程类似。负载均衡器接收请求的能力远超过应用服务器,每次处理请求和花费的内存都比较小,所以可以处理更多。如果负载均衡器承当不了,那么就可以有更多的负载均衡器,不过管理成本就提高很多,出现问题的概率也大。
4.数据库读写分离
如果应用服务器群对数据库读写都使用在同一个数据库服务器中,那么它承当的压力也很大
1.开源:引入更多的机器
2.节流:数据库优化,门槛高更复杂
数据库读写分离,并发多台服务器。主从结构的结构,不同的服务器定义为不同的角色,那么此时需要将不同角色的服务器进行不同的操作,时时进行数据同步。而一般读数据的频率比写的频率高。主服务器进行写,从服务器进行读,从服务器要同步主服务器的内容。
5.缓存的引入
数据库读硬盘,所以响应慢。把数据进行冷热区分,热点数据存放在缓存中,所有的数据都放在数据库中。缓存为了更快就只能存比较少的热点数据。引入缓存确实提高读取的效率了,但是更改数据后,我们需要对缓存的数据进行同步,那么也比较的复杂。这一缓存的实现就是使用Redis。
6.数据库分库分表
引入分布式系统,不光要应对更高的请求量,也要应对更多的数据量。有些数据占内存大,并且一台服务器难以存储下,这时就需要对这些数据库进行拆分,将其分库分表。
分库:MySQL上的逻辑集合表database,引入多个数据库服务器存储一个database或者多个database
分表:一个database存不下,那么就分表放入服务器中。
7.微服务结构
应用服务器处理内容太多导致服务器变得复杂,就需要对业务进行拆分为更小的服务器。每一个服务器处理一个业务,该结构就是微服务结构。一个或者多个服务器共同处理一个业务模块,方便程序员管理;更方便达到功能的复用;不同的服务进行不同的硬件资源部署提高利用率。
缺点:1.整个系统的性能下降。多个服务之间更依赖网络通信,保证性能就必须引入更多的硬件。2.系统复杂度变高,出现问题的概率变大了。需要一系列手段来管理,监控与运维。
3.概念介绍
应用/系统:一组服务器的程序
模块/组件:程序的某个独立的功能
分布式:引入多个主机协同配合完成工作,物理上的多个主机
集群:逻辑上的多个主机
主从结构:分布式系统常见结构。从节点的数据由主节点同步而来
中间件:与业务无关的服务,功能更通用的服务(数据库,缓存,消息队列等)
评价指标:
1.可用性(核心):当前系统整体可用的时间/总时间
2.响应时长:处理一次请求花费的时间
3.吞吐/并发:衡量系统处理请求的能力,能处理多少个请求
2.Redis的特性
1.在内存中存储数据:通过键值对的形式存储数据。是一种非关系型数据库
2.可编程的:通过交互式命令或者脚本来批量执行操作
3.可扩展的:在原有功能上扩展,本质是一个动态链接库
4.持久化的:Redis将数据存储在硬盘上,以内存为主,硬盘为辅的。保证效率最大化
5.支持集群:水平扩展
6.高可用:自身支持主从结构,从节点备份主节点的内容
Redis的操作与访问都快的原因:
1.存储在内存里,访问速率快
2.核心功能简单
3.网络角度,使用了IO多路转接技术
4.使用大多是单线程模式
相关文章:
Redis -- 基础知识1
1.介绍 1.初识Redis Redis:The open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker. in-memory data:在内存中存储,Redis是在分布式系统中存储起作用的 解释&am…...
ubuntu 20.04 passwd 指令不能使用
Linux 更改用户密码报Changing password for user 用户名. passwd: Module is unknown或更改新增用户密码passwd:未知的用户名 报错信息如下: 解决方法: 可以排查 /etc/pam.d/passwd配置文件 注释掉包含pam_passwdqc.so模块的行,…...
单片机郭天祥(02)
1:解决keil5软件的乱码问题,修改编码为UTF-8 2:打开keil5使用debug对编写好的程序进行调试 给程序打上断点 使用仿真芯片 更改设备管理器相关设置 接通电源后点击debug连接到51单片机 使用stc-isp获取延时函数 将延时函数添加进入创建好的…...
Hadoop3教程(三十五):(生产调优篇)HDFS小文件优化与MR集群简单压测
文章目录 (168)HDFS小文件优化方法(169)MapReduce集群压测参考文献 (168)HDFS小文件优化方法 小文件的弊端,之前也讲过,一是大量占用NameNode的空间,二是会使得寻址速度…...
metersphere 接口自动化
Metersphere 使用步骤大致如下: 安装 Metersphere Metersphere 是一款基于 Docker 的应用程序,因此在使用 Metersphere 之前,需要先安装 Docker。安装 Docker 后,再下载 Metersphere 的安装包并解压缩。 启动 Metersphere 在终…...
Mac上安装和配置Git
在Mac上安装和配置Git是一个相对简单的过程,以下是一份详细的步骤指南。 首先,你需要确保你的Mac已经安装了Homebrew(如果还没有安装,可以通过以下命令安装:),Homebrew是一个包管理器ÿ…...
【文件操作】Java -操作File对象
个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 文件操作 Java - File对象 Java - File对象 Fi…...
Socks5代理技术:驱动数字化时代跨界发展的利器
随着全球数字化进程的加速推进,Socks5代理技术作为一项关键的网络技术正日益成为推动跨界电商、爬虫数据分析、企业出海以及游戏体验优化等领域发展的重要驱动力。其高效稳定的网络连接能力以及灵活的应用方式,不仅为企业提供了全球市场拓展的无限可能&a…...
基于二维小波变换的散斑相位奇异构造算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 图(1)表示散斑原图像,(2)表示对(1)图像进行x轴方向的极化分析的小波相位图,呈周期的水平条纹,(3)表示对(1)图像…...
为啥么有奖章
6.1 域名系统 DNS 应用层的许多协议都是基于客户服务器方式。即使是 P2P 对等通信方式,实质上也是一种特殊的客户服务器方式。这里再明确一下,客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。客户服务器方式所描述的是进程之间服务和被…...
【报错】Unbalanced delimiter found in string
Unbalanced delimiter found in string uniapp报错Unbalanced delimiter found in string 查看代码发现原来是粗心导致的。条件编译删漏了一条 hid.close()// #endif加上前面的条件编译 or减去后面的即可...
Python(一)关键字、内置函数
程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》&am…...
聊聊分布式架构10——Zookeeper入门详解
目录 01ZooKeeper的ZAB协议 ZAB协议概念 ZAB协议基本模式 消息广播 崩溃恢复 选举出新的Leader服务器 数据同步 02Zookeeper的核心 ZooKeeper 的核心特点 ZooKeeper 的核心组件 选举算法概述 服务器启动时的Leader选举 服务器运行期间的Leader选举 03ZooKeeper的…...
springmvc视图格式——模板引擎freemarker输出HTML文本
目录 1. freemarker 介绍创建测试工程2.2.2) 配置文件2.2.3) 创建模型类2.2.4) 创建模板2.2.5) 创建controller2.2.6) 创建启动类2.2.7) 测试 2.3) freemarker基础2.3.1) 基础语法种类2.3.2) 集合指令(List和Map)2.3.3) if指令2.3.4) 运算符2.3.5) 空值处…...
用长tree方式做等长线
我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 相关文章链接: 用set_data_check的方式做等长线 前面讲过了如何用set_data_check做等长线,这里再讲一下如何用cts的方式做。 1)写一个sdc,把等长线的起点设置成clock source,用于创建create_…...
C# out参数out多个参数
文章目录 C# out参数out多个参数背景说明作用方法定义调用方法测试结果注意 C# out参数out多个参数 背景说明 一个方法返回多个相同数据类型的变量,可以采用数据的方式; 我需要返回多个不同数据类型的方法,在这里采用out多个参数的方式。 …...
选择Android还是IOS?我终于明白了!
选择Android还是iOS,取决于个人的喜好和需求。以下是一些可能帮助您做出决策的考虑因素: 用户界面和易用性: iOS系统的界面比Android更加简单、易用,而且应用程序布局更加一致,可以更快地学会如何使用。Android系统除了…...
uniapp高德地图ios 使用uni.chooseLocation选取位置显示没有搜索到相关数据
uniapp云打包后,高德地图ios选取位置显示“ 对不起,没有搜索到相关数据” 详细问题描述 废话不多说,直接上图 解决方案 1.打开高德地图开发平台 2.重新创建key 3.获取云打包时的ios报名作为安全码 4.使用生成的高德key更改manifest.json里…...
Python绘制论文中的图形
一、条形图 使用场景:对多个实验方法的性能进行比较。代码: #条形图 import matplotlib.pyplot as plt import numpy as np#实验数据,每一行代表一个method,每一列代表一个性能指标 dataacc [[0.9504, 0.9315, 0.9420, 0.9409]…...
flutter复制口令返回app监听粘贴板
overridevoid didChangeAppLifecycleState(AppLifecycleState state) {switch (state) {case AppLifecycleState.inactive: // 处于这种状态的应用程序应该假设它们可能在任何时候暂停。break;case AppLifecycleState.resumed: //从后台切换前台,界面可见handle();b…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
