redis 十. 线程基础
目录
- 一. redis 基础复习与了解redis6
- 二. redis 线程问题
- 总结
一. redis 基础复习与了解redis6
- redis官网, redis中文网站, redis命令参考网站
- 此处以redis6.0.8或以上版本为例(查看自己redis版本命令"redis- server -v")
- 按照redis6以上版本测试使用时,redis.conf下需要改几个配置
- redis 将所有数据放到内存中,内存的响应时长大约为100纳秒,对于小数据包,redis可以达到8w到10w的qps
- redis6中,多线程机制默认是关闭的,开启需要在redis.cnf中配置两个地方
io- threads- do- reads :修改为yes
io- threads: 设置规则: 如果cup为4 建议设置为2-3,如果cpu为8建议设置为6,线程数一定要小于cpu数
- 要达到redis6多线程最佳性能,redis要安装到Linux或Unix系统,原因: 这两个系统底层有select, poll, epoll 三个函数,而redis6依靠epoll个函数
二. redis 线程问题
- 单线程: redis4版本以前是单线程单线程的优点,数据结构简单,减少锁的开销,减少线程切换时上下文的切换,提高qps(注意点: 客户端到redis服务端是单线程,redis服务端内部提供了IO多路复用器,通过多路复用器管理连接到redis上的所有线程请求,无阻塞获取请求将请求交给文件事件处理器)
- 单线程为什么快
1)基于内存,
2)数据结构是专门设计的,这些数据结构在查找和操作是时间复杂度大部分都是0(1)
3)多路复用和非阻塞io: 使用io多路复用来监听多个socket客户端连接,达到一个线程连接处理多个请求,减少线程接口的开销,同时避免io阻塞,线程间的上下文切换
- redis4以后就不再是单纯的单线程,加入了异步删除
加入异步删除的原因: 假设我们往redis中set了一个很大的数据,后续不需要了,想执行del删除掉,如果这个key有20g由于惰性删除的问题删不掉(后续会讲),并且在删除期间如果再有请求进来会一直阻塞等待
- redis由单线程进化到多线程的原因(官方大概意思): redis是基于内存的原因认为redis的瓶颈可能存在内存大小或网络带宽上,所以加入了多线程,例如: 正常情况下del指令可以很快的删除数据,而当被删除的key是一个非常大的对象时,比如包含成千上万个元素的hash集合,那么这个del指令就会造成redis主线程卡顿,所以redis4中加入了异步删除,常见的几个命令有(简单解释从redis主线程剥离,交由bio子线程处理,减少主线程的阻塞时间,减少又有删除带来的性能及稳定问题)
- UNLINK key: 指令, 与del区别是, UNLINK可以理解为将键与键空间断开连接, 会执行命令之外的线程中执行实际的内存回收,不会阻塞
- flushdb async: 其中FLUSHDB 命令会遍历用户正在使用的数据库,移除其中包含的所有键值对,4.0版本后增加了async, 此时执行数据库清理操作将放在后台线程里面以异步方式进行,这样一来 FLUSHDB 命令就不会再阻塞服务器了
- flushall async: 与上一个命令大致相同异步清理实例数据
- 总结来说: redis是单线程的,redis4为了解决大key删除问题增加了异步删除,redis使用IO多路复用,可以这样理解redis工作线程客户端到redis服务器是单线程,redis服务器内部处理是多线程
总结
- redis4以前使用单线程,redis4后增加了异步删除,解决了删除大key,大数据阻塞问题,并且采用io多路复用
redis采用IO多路复用,将网络数据的读写,请求解析通过多个IO线程来处理,对于真正执行的命令仍有主线程一个来操作,多个IO线程解决网络IO问题,单个工作线程,保证线程安全
相关文章:
redis 十. 线程基础
目录一. redis 基础复习与了解redis6二. redis 线程问题总结一. redis 基础复习与了解redis6 redis官网, redis中文网站, redis命令参考网站此处以redis6.0.8或以上版本为例(查看自己redis版本命令"redis- server -v")按照redis6以上版本测试使用时,redis.conf下需要…...
NQA简介
NQA简介定义目的NQA原理描述使用DHCP进行测试DNS测试NQA的联动机制NQA的应用场景定义 网络质量分析NQA(Network Quality Analysis)是一种实时的网络性能侦探和统计技术,可以对响应时间、网络抖动、丢包率等网络信息进行统计。NQA能够实时监视…...
[python]上下文管理contextlib模块与with语句
文章目录with语句自定义对象支持withcontextlib模块closing自动关闭suppress回避错误ExitStack清理Python 中的 with 语句用于清理工作,封装了 try…except…finally编码范式,提高了易用性。with语句 with语句有助于简化资源管理: # 离开作…...
STM32之TIM编码器接口
编码器简介: 例子讲解:正交编码器有两个输出,一个A相,一个B相,AB接口输出正交信号。然后接入STM32的定时器的编码器接口,编码器接口自动控制定时器时基单元中的CNT计数器进行自增或自减,比如初始…...
b站第一,Python自动化测试实战详细教学,3天教你学会自动化测试
目录 简介 Python自动化测试概述 Python自动化测试目标 Python自动化测试流程 1. 测试计划和设计 2. 测试脚本开发 3. 测试执行和管理 4. 测试维护和优化 Python自动化测试最佳实践 Python自动化测试工具和框架 结论 简介 自动化测试是软件开发过程中一个必不可少的…...
刷题记录:P8804 [蓝桥杯 2022 国 B] 故障 条件概率
传送门:洛谷 题目描述: 题目较长,此处省略 输入: 3 5 30 20 50 0 50 33 25 0 30 0 35 0 0 0 0 0 25 60 1 3 输出: 2 56.89 1 43.11 3 0.00读完题目,我们会发现其实题目给了我们两个事件,并且这两个事件是相互关联的.因此不难想到使用条件概率 我们将故障原因看做事件AAA,结合…...
【算法】常用的基础数论
作者:指针不指南吗 专栏:算法篇 🐾或许会很慢,但是不可以停下🐾 文章目录1.GCD&LCM2.判断素数(质数)3.分解质因子1.GCD&LCM 最大公约数&最小共倍数 欧几里得算法——高效 //最大公约数 int gcd(int x,i…...
云原生场景下的容器网络隔离技术
云原生场景下的容器网络隔离技术 一、研究背景 随着云计算时代的到来,尤其是容器化技术的飞速发展,云原生作为云计算的未来阶段,其安全势必成为云安全的主要战场。从目前的云原生环境来看,云原生网络安全问题层出不穷࿰…...
用python绘制有向图
目录 添加边权重的有向图思路介绍代码实现效果图设置不同的样式节点和边的有向图思路介绍代码实现效果图下面的Python代码用于绘制有向图,其中使用了 networkx和 matplotlib.pyplot等库。 添加边权重的有向图 思路介绍 首先,创建了一个空的有向图像对象G,并添加了4个节点…...
Spring MongoDB 开发教程(一)—官方原版
MongoDB支持包含一系列功能:Spring配置支持基于Java的configuration类或Mongo驱动程序实例和副本集的XML命名空间。MongoTemplate帮助类,在执行常见的Mongo操作时提高生产力。包括文档和POJO之间的集成对象映射。将异常转换为Spring的可移植数据访问异常…...
数据结构——二叉搜索树
一、二叉搜索树概念 二叉搜索树又叫二叉排序树,它或是空树,或是具有以下性质的二叉树: (1)若它的左子树不为空,则左子树上的所有节点的值都小于根节点的值; (2)若它的…...
23年5月高项学习笔记3---项目管理概述
项目是创造独特的产品、服务或成果而进行的临时性的工作 独特:每个项目都不一样 可交付成果:某一过程,阶段或项目完成时形成的独特的并且可验证的产品、服务或成果。 临时的:明确的起点和终点、 -------- 项目集: 相…...
【组织架构】中国铁路成都局集团有限公司
0 参考 中国铁路成都局集团有限公司 1 公司介绍 中国铁路成都局集团有限公司,是中国国家铁路集团有限公司管理的18个铁路局集团有限公司之一,简称“成局”,地处中国西南,管辖范围辐射四川、贵州、重庆地区。管内地形复杂&#x…...
剧前爆米花--爪哇岛寻宝】java多线程案例——单例模式、阻塞队列及生产者消费者模型、定时器、线程池
作者:困了电视剧 专栏:《JavaEE初阶》 文章分布:这是关于java多线程案例的文章,进行了对单例模式、阻塞队列及生产者消费者模型、定时器和线程池的讲解,希望对你有所帮助! 目录 单例模式 懒汉模式实现 饿…...
Guitar Pro8中文版更新说明及系统要求介绍
Guitar Pro吉他软件是初学作曲,特别是同时又初学吉他的朋友们的良师益友,是一款极佳的初级软件,是非实时作曲软件之中的一件佳作。Guitar Pro在吉他和弦、把位的显示、推算、查询、调用等方面,也异常方便、简洁、直观和浩瀚&#…...
【id:19】【20分】A. 三数论大小(引用)
题目描述 输入三个整数,然后按照从大到小的顺序输出数值。 要求:定义一个函数,无返回值,函数参数是三个整数参数的引用,例如int &a, int &b, int &c。在函数内对三个参数进行排序。主函数调用这个函数进行…...
To_Heart—总结——FWT(快速沃尔什变换)
目录闲话拿来求什么或与异或闲话 这个比FFT简单了很多呢,,大概是我可以学懂的水平! 好像是叫 快速沃尔什变换 ? 拿来求什么 以 FFT 来类比。我们 FFT 可以在 O(nlogn)\mathrm{O(nlogn)}O(nlogn) 的复杂度下实现求解࿱…...
Google巨大漏洞让Win10、11翻车,小姐姐马赛克白打了
早年间电脑截图这项技能未被大多数人掌握时,许多人应该都使用过手机拍屏幕这个原始的方式。 但由于较低的画面质量极其影响其他用户的观感,常常受到大家的调侃。 但到了 Win10、11 ,预装的截图工具让门槛大幅降低。 WinShiftS 就能快速打开…...
腾讯云服务器部署内网穿透(让其他人在不同ip可以访问我们localhost端口的主机项目)(nps开源项目)
首先打开shell连接我们的云服务器 然后我们再opt目录下面创建一个文件夹用来存放我们的压缩包和文件 mkdir /opt/nps 这个是它官方的安装图解.所以我们按照这个docker安装过程来: 然后我们用docker安装镜像.这样的话比较简单一点 docker pull ffdfgdfg/nps 然后我们查看docker…...
IDS、恶意软件、免杀技术、反病毒技术、APT、对称加密、非对称加密以及SSL的工作过程的技术介绍
IDS的简单介绍IDS是:入侵检测系统(intrusion detection system,简称“IDS”)是一种对网络传输进行即时监视,在发现可疑传输时发出警报或者采取主动反应措施的网络安全设备。它与其他网络安全设备的不同之处便在于&…...
怎么把pdf转换成高清图片
怎么把pdf转换成高清图片?可以使用以下两种方法: 方法一:使用Adobe Acrobat Pro DC 1、打开需要转换的PDF文件,点击“文件”菜单中的“导出为”,在弹出的菜单中选择“图像”,然后选择“JPEG”。 2、在“…...
MATLAB 系统辨识 + PID 自动调参
系统辨识 PID 自动调参 文章目录系统辨识 PID 自动调参1. 导入数据1.1 从 Excel 中导入数据2. 系统辨识3. PID 自动调参1. 导入数据 1.1 从 Excel 中导入数据 如果不是从Excel中导入可以跳过该步骤 导入函数: [num,txt,raw]xlsread(xxx\xxx.xlsx);num返回的是…...
【vue3】组合式API之setup()介绍与reactive()函数的使用·上
>😉博主:初映CY的前说(前端领域) ,📒本文核心:setup()概念、 reactive()的使用 【前言】vue3作为vue2的升级版,有着很多的新特性,其中就包括了组合式API,也就是是 Composition API。学习组合…...
爬虫Day3 csv和bs4
爬虫Day3 csv和bs4 一、CSV的读和写 1. 什么是csv文件 csv文件叫做:逗号分隔值文件,像Excel文件一样以行列的形式保存数据,保存数据的时候同一行的多列数据用逗号隔开。 2. csv文件的读写操作 1) csv文件读操作 from csv import reader…...
nnAudio的简单介绍
官方实现 https://github.com/KinWaiCheuk/nnAudio; 论文实现: nnAudio: An on-the-Fly GPU Audio to Spectrogram Conversion Toolbox Using 1D Convolutional Neural Networks; 以下先对文章解读: abstract 在本文中&#x…...
【id:134】【20分】B. 求最大值最小值(引用)
题目描述 编写函数void find(int *num,int n,int &minIndex,int &maxIndex),求数组num(元素为num[0],num[1],...,num[n-1])中取最小值、最大值的元素下标minIndex,maxIndex(若有相同最值࿰…...
Java 面向对象
一、Java 8 增强的包装类 Java是面向对象的编程语言,但它也包含了8种基本数据类型,这8种基本数据类型不支持面向对象的编程机制,基本数据类型的数据也不具备对象的特性。(没有成员变量、方法可以被调用)。Java之所以提…...
五、传输层
(一)TCP传输控制协议 可靠的、面向连接的字节流服务,全双工,有端口寻址功能 1、TCP的三种机制 1.使用序号对分段的数据进行标记,便于调整数据包 2.TCP使用确认、校验和和定时器系统提供可靠性 3.TCP使用可变大小的…...
Thinkphp 6.0一对一关联查询
本节课我们来了解关联模型中,一对一关联查询的使用方法。 一.hasOne 模式 1. hasOne 模式,适合主表关联附表,具体设置方式如下: hasOne(关联模型,[外键,主键]); return $this->hasOne(Profile::class,user_id, id); 关联模型&…...
基于51单片机的自动打铃打鸣作息报时系统AT89C51数码管三极管时钟电路
wx供重浩:创享日记 对话框发送:单片机打铃 获取完整无水印论文报告说明(含源码程序、电路原理图和仿真图) 本次设计中的LED数码管电子时钟电路采用24小时制记时方式,本次设计采用AT89C51单片机的扩展芯片和6个PNP三极管做驱动&…...
wordpress中文下载/外链生成
CSS 背景(background) 目标 - 理解 - 背景的作用 - css背景图片和插入图片的区别 - 应用 - 通过css背景属性,给页面元素添加背景样式 - 能设置不同的背景图片位置 4.1 背景颜色(color) - 语法: background-color:颜色值; 默认的值是 trans…...
电商专业是做什么的/搜狗seo排名软件
目录前言Oracle 内存结构Oracle 进程结构文章总结前言上一篇文章体现了 Oracle 数据库的一些基本结构和存储结构,这篇文章将会讲到Oracle的服务器结构,实际上就是主要讲实例的结构。需要把这些底层的结构了解,在生产环境或是对Oracle才会有一…...
装修广告做哪个网站最好看/百度开放云平台
一个完整的正则使用过程 #调用re模块: In [11]: import re # re.match(pattern, string)第一个参数是你正则的规则, 第二个参数是检测的字符串: In [12]: are.match(r"redhat","redhathello") In [13]: print a.group() redhat #re…...
网站长图怎么做/买了500元黑科技引流靠谱吗
相关历史文章(阅读本文前,您可能需要先看下之前的系列?)国内最全的Spring Boot系列之三2020上半年发文汇总「值得收藏」「工作流Activiti」介绍-新手上路,注意安全 - 第320篇「Activiti精品 悟纤出品」activiti介绍-十万个为什么 - 第321篇「Activiti精…...
网站建设 小程序开发/福州seo外包公司
年会是遇到抽奖环节如何制作ppt呢,这里有个解决方法,提供参考。步骤就是这样:1、新建ppt.2、添加一个命令控件和一个标签控件(开发工具---控件---命令控件&标签控件)3、点击“命令按钮CommandButton1”右击鼠标&am…...
海口网站建设维护/山西搜索引擎优化
需求 求出 当前天, 与指定日期之间相差的天数, 指定日期一定在 当前天之前即 当前天为 01-23 , 指定日期应该为 01-22 解决方案 使用hutools工具包中提供的计算两个日期之间相差天数的方法 betweenDay() 三个参数: betweenDay(Date,Date,Boolean) // 使用方式// cn.hutool.c…...