Redis_概述_特性_IO模型
本章要点
- 掌握NoSql数据库的概念和与sql数据库的区别
- 初步了解Redis内存数据库
- 了解Redis内存数据库的优点及其原因
- 掌握Redis的多线程IO模型
- 学习Redis的安装和配置
Redis简介
Redis 全称 Remote Dictionary Server 远程字典服务! 使用C语言编写,支持网络,可基于内存也可以持久化的日志型,NoSQL开源内存数据库,其提供多种语言的API Redis是一个key-value存储系统,支持存储的val类型很多,String,List,Set,Zset(sorted set--有序集合) 和Hash
NoSQL
NoSQL (not noly sql) 泛指非关系型数据库.产生主要为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题
种类
我们根据存储的方式有不同的NoSQL数据库种类
- 键值存储数据库
就像map一样key-value对 代表 Redis
- 列存储数据库
我们知道关系型数据库是典型的行存储数据库,因为行存储数据库在物理层面上占用的是连续存储空间,不适合海量数据存储,而列存储方式可以实现分布式存储,适合海量存储 代表 Hbase
- 文档型数据库
就是NoSQL和关系型数据库的结合!最像关系型数据库的NoSQL.代表MongoDB
- 图形(Graph)数据库
用于存放节点关系的数据库.列如描述不同人间的关系.典型代表 Neo4J
Redis用途
Redis是内存数据库,相比于磁盘存储就是一个快字,所以一般用于做数据缓存!即我们客户端从数据库DBMS查询的数据首先写入到Redis中,然后当下次再有客户端需要访问该条数据,我们只需要直接读取Redis即可!,不仅减少了RT一次http的往返时间,还减少了DBMS的压力!
缓存数据划分: 我们根据Redis缓存于DBMS中数据的同步性划分为2类
- 实时同步缓存
就是一些实时性数据当DBMS更新后,Redis缓存中的相关数据会立即清楚,当下次请求来临先到DBMS中获取,然后再写入到Redis中
- 阶段性同步缓存
当DBMS持久层数据更新后,Redis缓存中存放的相关数据并不会立即清除, 允许一段时间Redis缓存中的数据和DBMS中的数据不完全一致!这个时间段就是缓存数据的过期时间!
Redis特性
能够做缓存的技术中间件这么多,我们为何要选择Redis Redis的过人之处在哪呢?
- 性能极高
Redis的性能是极高,Redis的读操作速度可达到 11w 次/s,写的速度可达到 8w次/s 原因:1.Redis的所有操作都是在内存中进行的 2.Redis用C语言开发 3.Redis源码非常精细
- 简单稳点
Redis源码很少,早期自由2w行左右,从3.0加入集群功能后代码变成5w行只有.可维护性也高
- 持久化
虽然Redis是内存数据库,但是也支持持久化操作. 有2种方式 RDB和AOF
- 高可用集群
Redis提供了高可用的主从集群,可以保证系统的安全性
- 丰富的数据类型
支持存储的value类型很多.包括 String,List,Set,Zset(sorted set) 和Hash 还有BitMap,HyperLogLog,Geospatial类型 BitMap:一般用于大数据的二值性统计 HyperLogLog:用于数据量庞大的日志做去重操作 Geospatial:地理空间,主要提供地理位置的相关计算
- 强大的功能
Redis提供了数据过期功能,发布/订阅功能,简单事务功能,还支持Lua脚本扩展功能.
- 客户端语言广泛
Redis提供了简单的TCP通信协议,编程语言可以方便的接入Redis.
- 支持ACL权限控制
之前的权限控制十分笨拙,从Redis6开始引入了ACL模块,可以给不同的用户指定不同的权限 ALC: Access Control List 访问控制列表,是一种细粒度的权限控制策略,可以针对任意用户和组进行权限控制, UGO是一种粗粒度的权限控制操作策略
- 支持多线程IO模型: Redis之前版本采用的是单线程模型,从6.0开始支持多线程模型
Redis的IO模型
Redis客户端提交的请求,然后由Redis处理请求所采用的处理架构,称为Redis的IO模型,不同版本的IO模型不同
单线程模型
对于Redis3.0及之前版本,Redis的IO模型就是纯粹的单线程模型,所有客户端的请求由一个线程处理!
Redis的单线程采用了多路复用技术!
对于多路选择算法参见的有3种:select模型,poll模型,epoll模型
- poll模型:采用轮询方式,该模型对客户端的就绪处理是有延迟的
- epoll模型: 采用的是回调的方式
每个客户端如果要向Redis提交请求,需要先建立一个socket连接,并向事件分发器注册一个事件.一旦该事件发生说明该链接已经就绪.然后事件分发器就可以感知到.然后获取到客户端发送的请求,然后放入任务队列,等待处理线处理! 事件分发器会根据不同的事件将任务交给不同的时间处理器处理
混合线程模型
Redis4.0开始就加入了多线程元素,虽然处理客户端请求仍是单线程模型.但是对于一些比较耗时并且不影响客户端响应的操作交给后台其他线程处理 例如持久化操作,对AOF的rewrite,对失效链接的处理等
多线程模型
Redis6.0版本开始,才是真正意义的多线程模型.因为客户端请求的处理采用的是多线程模型
多线程IO模型中的多线程仅仅是用来解析客户端请求,然后解析出请求放入到任务队列.对于具体任务的处理还是右主线程处理!这样用户就无需考虑线程安全问题.无需考虑事务控制.以及像LPUSH/LPOP执行顺序问题.
优缺点总结
- 单线程模型
- 优点:可维护性高,性能高.不存在并发读写情况.所以不存在执行顺序的不确定性,不存在切换线程的开销,不存在死锁问题,不存在为了数据安全而进行的加锁/解锁开销
- 缺点:性能受到影响,由于单线程自会用到一个处理器,所以会有处理器的浪费
- 多线程模型
- 优点:其结合了单线程和多线程的优点,并且避开了他们的不足 缺点:该模型没有显示不足.如果非要说缺点的话,他并非是真正意义上的多线程模型,因为真正处理任务的线程仍然是单线程.所以性能有些许影响!
相关文章:

Redis_概述_特性_IO模型
本章要点 掌握NoSql数据库的概念和与sql数据库的区别初步了解Redis内存数据库了解Redis内存数据库的优点及其原因掌握Redis的多线程IO模型学习Redis的安装和配置 Redis简介 Redis 全称 Remote Dictionary Server 远程字典服务! 使用C语言编写,支持网络,可基于内存也可以持久化…...

[论文速览] Sparks of Artificial General Intelligence: Early experiments with GPT-4
Sparks of Artificial General Intelligence: Early experiments with GPT-4 2023.3.22 微软官方发布了目前人类史上最强AI模型 GPT-4 的综合能力评估论文,总所周知,2023年是通用人工智能(Artificial General Intelligence,AGI&a…...

舔狗日记:学姐生日快到了,使用Python把她的照片做成视频当礼物
舔狗日记1前言一、需要调入的模块二、实现合并多张图片转成 mp4 视频三、优化改进一下总结前言 这不是学姐生日快到了,于是我学了一手使用Python来把学姐的照片生成为视频,到时候给她一个惊喜! 好了先不舔了,下面分享一下用pytho…...
从《移动互联网应用程序(App)收集使用个人信息自评估指南》看个人信息保护着力点
为指导应用运营者对自身收集、使用个人信息行为进行自查自纠,2019年3月,应用专项治理工作组发布了《应用违法违规收集使用行为自查自查指南》。个人信息”。随着对App违法收集、使用个人信息行为评价工作的开展和深入,《App违法违规收集、使用…...

电脑0x0000001A蓝屏错误怎么U盘重装系统教学
电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。 准备工作&…...

Day939.如何小步安全地升级数据库框架 -系统重构实战
如何小步安全地升级数据库框架 Hi,我是阿昌,今天学习记录的是关于如何小步安全地升级数据库框架的内容。 当消息组件的数据存储都是采用 SQL 拼写的方式来操作,这样不便于后续的扩展及维护。除此之外,相比前面的其他重构&#x…...

2023 年十大 API 管理趋势
作者郑玩星,API7.ai 技术工程师。 阅读原文 什么是 API?什么是 API 管理? 近期,AIGC(AI Generated Content,生成式人工智能)在各行业的应用日趋普及。AIGC 服务提供商通过 API 向外部提供其内…...

计算机网络微课堂1-3节
目录 1. TCP/TP协议编辑 2. 3.调制解调器 4.因特网的组成 5.电路交换 6.分组交换 重要常用 7.报文交换 8.总结电路交换 报文交换和分组交换 9. 1. TCP/TP协议 2. ISP 网络提供商 ISP的三层 国际 国家 和本地 3.调制解调器 什么是调制解调器,它存在的…...
[Eigen中文文档] Array类与元素操作
文档总目录 本文目录什么是Array类?Array类型访问Array中的值加法与减法Array乘法其他按元素操作的运算array和matrix表达式之间的转换英文原文(The Array class and coefficient-wise operations) 本页旨在提供有关如何使用Eigen的Array类的概述和说明。 什么是A…...
python学习,全球有哪些特别好的社区推荐呢?
Surfshark可以访问全球社区学习的surfshark工具使用方法教程:qptool.net/shark.html 以下是一些全球范围内比较受欢迎的 Python 学习社区: 中文社区:csdn.net 优势:本土国语社区,获得相关知识与经验便利。 Python官…...
LC-1042. 不邻接植花(四色问题(染色法))
1042. 不邻接植花 难度中等198 有 n 个花园,按从 1 到 n 标记。另有数组 paths ,其中 paths[i] [xi, yi] 描述了花园 xi 到花园 yi 的双向路径。在每个花园中,你打算种下四种花之一。 另外,所有花园 最多 有 3 条路径可以进入…...
python实战应用讲解-【numpy科学计算】scikits-learn模块(附python示例代码)
目录 Numpy 安装scikits-learn 准备工作 具体步骤 Numpy 加载范例数据集 具体步骤...
大数据开发必备面试题Spark篇01
1、Hadoop 和 Spark 的相同点和不同点? Hadoop 底层使用 MapReduce 计算架构,只有 map 和 reduce 两种操作,表达能力比较欠缺,而且在 MR 过程中会重复的读写 hdfs,造成大量的磁盘 io 读写操作,所以适合高时…...

SpringBoot整合xxl-job详细教程
SrpingBoot整合xxl-job,实现任务调度说明调度中心执行器调试整合SpringBoot说明 Xxl-Job是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。Xxl-Job有…...

【MySQL--04】数据类型
文章目录1.数据类型1.1数据类型分类1.2数值类型1.2.1tinyint类型1.2.2bit类型1.2.3小数类型1.2.3.1 float1.2.3.2 decimal1.3字符串类型1.3.1 char1.3.2 varchar1.3.3char和varchar的比较1.4日期和时间类型1.5 enum和set1.5.1 enum1.5.2 set1.5.3 示例1.数据类型 1.1数据类型分…...

git 将其它分支的文件检出到工作区
主要是使用如下命令: git checkout [-f|--ours|--theirs|-m|--conflict<style>] [<tree-ish>] [--] <pathspec>…覆盖与 pathspec 匹配的文件的内容。当没有给出<tree-ish> (通常是一个commit)时,用 index 中的内容覆盖工作树…...
人工智能的最大危险是什么?
作者:GPT(AI智学习) 链接:https://www.zhihu.com/question/592107303/answer/2966857095 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 首先:人工智能为人类带来了很多益处&…...

rk3568点亮E-ink
rk3568 Android11/12 适配 E-ink “EINK”是英语ElectronicInk的缩写。翻译成中文为“电子墨水”。电子墨水由数百万个微胶囊(Microcapsules)所构成,微胶囊的大小约等同于人类头发的直径。每个微胶囊里含有电泳粒子──带负电荷的白色以及带正电荷的黑色粒子&#…...

如何将Springboot项目通过IDEA打包成jar包,并且转换成可执行文件
首先在IDEA打开你的项目,需要确认项目可以正常运行,然后点击页面右侧的Maven,运行Lifecycle下的package, 此时在项目的target目录下就可以看到一个jar包 这个时候你可以在jar包所在目录下执行cmd窗口,运行 java -jar campus-market-0.0.1-S…...

总结:网卡
一、背景 经常听到eth0,bond0这些概念,好奇他们的区别,于是有了此篇文章记录下。 二、介绍 网卡:即网络接口板,又称网络适配器或NIC (网络接口控制器),是一块被设计用来允许计算机在计算机网络上进行通讯…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...

STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...