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…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
