当前位置: 首页 > news >正文

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模块的行&#xff0c…...

单片机郭天祥(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是一个包管理器&#xff…...

【文件操作】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…...

GEMMA-3像素级JRPG界面实测:零基础也能看懂图片的AI神器

GEMMA-3像素级JRPG界面实测:零基础也能看懂图片的AI神器 1. 复古像素风遇上AI视觉革命 当90年代JRPG的怀旧美学撞上Google最先进的多模态AI,会擦出怎样的火花?GEMMA-3像素级JRPG界面给出了惊艳答案。这款名为"Pixel Station"的工…...

Kubernetes StatefulSet 完全指南,SOFA 架构--01--简介。

StatefulSet 的核心概念 StatefulSet 是 Kubernetes 中用于管理有状态应用的控制器,确保 Pod 具有稳定的网络标识和持久化存储。每个 Pod 拥有唯一的名称和持久化卷声明(PVC),即使重启或重新调度也不会改变。 稳定网络标识的作用 …...

论文阅读:AIED 2024 RuffleRiley: Insights from Designing and Evaluating a Large Language Model-Based Con

总目录 大模型相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 https://arxiv.org/abs/2404.17460 Ruffle&Riley: Insights from Designing and Evaluating a Large Language Model-Based Conversational Tutoring System 📄 …...

如何高效实现图标自动化导入:unplugin-icons与unplugin-vue-components的完美配合指南

如何高效实现图标自动化导入:unplugin-icons与unplugin-vue-components的完美配合指南 【免费下载链接】unplugin-icons 🤹 Access thousands of icons as components on-demand universally. 项目地址: https://gitcode.com/gh_mirrors/un/unplugin-i…...

FineReport 11安装配置全攻略:从下载到问题解决一站式指南

FineReport 11实战指南:从零搭建企业级报表平台 在企业数字化转型浪潮中,数据可视化与报表工具已成为刚需。作为国内领先的商业智能解决方案,FineReport 11凭借其强大的数据连接能力、灵活的报表设计功能和直观的操作界面,正成为越…...

千问3.5-9B Python入门实战:从零搭建你的第一个AI应用

千问3.5-9B Python入门实战:从零搭建你的第一个AI应用 1. 为什么选择千问3.5-9B入门AI开发 如果你刚接触Python和AI开发,可能会觉得搭建AI应用是个遥不可及的目标。但实际上,借助星图GPU平台和千问3.5-9B这样的开源大模型,入门A…...

Boost电路元件选型避坑指南:从MOSFET到二极管的实战经验分享

Boost电路元件选型避坑指南:从MOSFET到二极管的实战经验分享 升压转换器设计中最令人头疼的环节,往往不是拓扑结构的理解,而是那些看似简单却暗藏玄机的元件选型。去年我们团队的一个项目就曾因为二极管选型不当,导致整批产品在高…...

高可用存储架构

高可用存储架构:双机架构 常见的高可用存储架构有主备、主从、主主、集群、分区,每一种又可以根据业务的需求进行一些特殊的定制化功能,由此衍生出更多的变种。 存储高可用方案的本质都是通过将数据复制到多个存储设备,通过数据冗…...

QUAD7SHIFT:轻量级七段数码管驱动库设计与嵌入式优化

1. 项目概述QUAD7SHIFT 是一款专为驱动 4 位共阴/共阳七段数码管模块设计的轻量级嵌入式显示库,核心目标是通过级联的 74HC595 移位寄存器实现高效、低资源占用的动态扫描显示。该库并非简单封装 SPI 接口,而是围绕“硬件抽象—时序控制—数据映射—功耗…...

Qwen2.5-VL-7B-Instruct效果对比:不同prompt工程对图文推理影响分析

Qwen2.5-VL-7B-Instruct效果对比:不同prompt工程对图文推理影响分析 你有没有遇到过这种情况?给一个多模态模型看一张图,问它一个问题,结果它要么答非所问,要么干脆说“我不知道”。很多时候,问题可能不在…...