范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Redis新特性篇多线程模型解读

  Redis 官方在 2020 年 5 月正式推出 6.0 版本,提供很多振奋人心的新特性,所以备受关注。
  主要特性如下:  多线程处理网络 IO;  客户端缓存;  细粒度权限控制(ACL);  RESP3  协议的使用; 用于复制的 RDB 文件不在有用,将立刻被删除;  RDB 文件加载速度更快;
  其中备受关注的就是「 多线程模型 + 客户端缓存 」,我们只有掌握了新特性原理,才能判断什么时候使用 6.0 版本,如何用的更好更快,不踩坑。
  本篇先从  Redis 多线程模型 开始,至于客户端缓存、等且听下回分解。  ❝
  Redis 6.0 之前为什么不使用多线程?
  官方答复:  使用 Redis 时,几乎不存在 CPU 成为瓶颈的情况, Redis 主要受限于内存和网络。  在一个普通的 Linux 系统上,Redis 通过使用 pipelining  每秒可以处理 100 万个请求,所以如果应用程序主要使用 O(N) 或O(log(N)) 的命令,它几乎不会占用太多 CPU。 使用了单线程后,可维护性高。多线程模型虽然在某些方面表现优异,但是它却引入了程序执行顺序的不确定性,带来了并发读写的一系列问题,增加了系统复杂度、同时可能存在线程切换、甚至加锁解锁、死锁造成的性能损耗。
  Redis 通过 AE 事件模型以及 IO 多路复用等技术,处理性能非常高,因此没有必要使用多线程。
  单线程机制让 Redis 内部实现的复杂度大大降低,Hash 的惰性 Rehash、Lpush 等等『线程不安全』的命令都可以无锁进行 。
  在《Redis 为什么这么快?》码哥有详细介绍快的原理 。  ❝
  Redis 6.0 之前单线程指的是 Redis 只有一个线程干活么?
  非也, Redis 在处理客户端的请求时,包括获取 (socket 读)、解析、执行、内容返回 (socket 写) 等都由一个顺序串行的主线程处理,这就是所谓的「单线程」 。
  其中执行命令阶段,由于 Redis 是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会进入一个 Socket 队列中,当 socket 可读则交给单线程事件分发器逐个被执行。
  此外,有些命令操作可以用后台线程或子进程执行(比如数据删除、快照生成、AOF 重写)。  ❝
  那 Redis 6.0 为啥要引入多线程呀?
  随着硬件性能提升,Redis 的性能瓶颈可能出现网络 IO 的读写,也就是: 单个线程处理网络读写的速度跟不上底层网络硬件的速度 。
  读写网络的  read/write  系统调用占用了Redis 执行期间大部分CPU 时间,瓶颈主要在于网络的 IO 消耗, 优化主要有两个方向: 提高网络 IO 性能,典型的实现比如使用  DPDK 来替代内核网络栈的方式。 使用多线程充分利用多核,提高网络请求读写的并行度,典型的实现比如  Memcached 。
  添加对用户态网络协议栈的支持,需要修改 Redis 源码中和网络相关的部分(例如修改所有的网络收发请求函数),这会带来很多开发工作量。
  而且新增代码还可能引入新 Bug,导致系统不稳定。
  所以,Redis 采用多个 IO 线程来处理网络请求,提高网络请求处理的并行度。
  需要注意的是,Redis 多 IO 线程模型只用来处理网络读写请求,对于 Redis 的读写命令,依然是单线程处理 。
  这是因为,网络处理经常是瓶颈,通过多线程并行处理可提高性能。
  而继续使用单线程执行读写命令,不需要为了保证 Lua 脚本、事务、等开发多线程安全机制,实现更简单。
  架构图如下 :
  图片来源:后端研究所  ❝
  主线程与 IO 多线程是如何实现协作呢?
  如下图:
  Redis多线程与IO线程
  主要流程 :  主线程负责接收建立连接请求,获取  socket  放入全局等待读处理队列; 主线程通过轮询将可读  socket  分配给 IO 线程; 主线程阻塞等待 IO 线程读取  socket  完成; 主线程执行 IO 线程读取和解析出来的 Redis 请求命令;  主线程阻塞等待 IO 线程将指令执行结果回写回  socket 完毕; 主线程清空全局队列,等待客户端后续的请求。
  思路: 将主线程 IO 读写任务拆分出来给一组独立的线程处理,使得多个 socket 读写可以并行化,但是 Redis 命令还是主线程串行执行。  ❝
  如何开启多线程呢?
  Redis 6.0 的多线程默认是禁用的,只使用主线程。如需开启需要修改  redis.conf  配置文件:io-threads-do-reads yes 。 ❝
  码老湿,线程数是不是越多越好?
  当然不是,关于线程数的设置,官方有一个建议:4 核的机器建议设置为 2 或 3 个线程,8核的建议设置为 6 个线程,线程数一定要小于机器核数。
  线程数并不是越大越好,官方认为超过了 8 个基本就没什么意义了。
  另外,开启多线程后,还需要设置线程数,否则是不生效的 。  io-threads 4 总结与思考
  随着互联网的飞速发展,互联网业务系统所要处理的线上流量越来越大,Redis 的单线程模式会导致系统消耗很多 CPU 时间在网络 I/O 上从而降低吞吐量,要提升 Redis 的性能有两个方向:  优化网络 I/O 模块  提高机器内存读写的速度
  后者依赖于硬件的发展,暂时无解。所以只能从前者下手,网络 I/O 的优化又可以分为两个方向:  零拷贝技术或者 DPDK 技术  利用多核优势
  模型缺陷
  Redis 的多线程网络模型实际上并不是一个标准的  Multi-Reactors/Master-Workers 模型。
  Redis 的多线程方案中,I/O 线程任务仅仅是通过 socket 读取客户端请求命令并解析,却没有真正去执行命令。
  所有客户端命令最后还需要回到主线程去执行,因此对多核的利用率并不算高,而且每次主线程都必须在分配完任务之后忙轮询等待所有 I/O 线程完成任务之后才能继续执行其他逻辑。
  在我看来,Redis 目前的多线程方案更像是一个折中的选择:既保持了原系统的兼容性,又能利用多核提升 I/O 性能。

DOTATI10一串六夺冠的TeamSpirit没有像液体得到观众认可首先问是不是,再问为什么。TS夺冠显然是近几年来独联体赛区的最振奋人心的一次巨大胜利,因为这是自从ti3之后,独联体赛区再次站上决赛的舞台,并且夺得不朽盾。在Ti正赛中多次暴走的y铠皇连续两天登场KPL,他到底有什么战略意义?这两天,铠连续在KPL季后赛中,被职业选手选了出来。12月9日,RW侠对阵TTG的第五场,RW。小夜在五楼直接拿了铠,走的是打野位。这场比赛,铠的发挥特别亮眼,双杀和三杀的画面都有真三国无双7猛将传全武将5星秘武图鉴蜀蜀汉的故事让很多人沉迷其中,其中耳熟能详的故事实在太多了。什么三英战吕布,温酒斩华雄,赵子龙七进七出救阿斗,张飞长坂坡前一声吼,锦马超杀的曹操丢盔弃甲,老黄忠定军山怒斩夏侯渊,真是诸葛亮神技巧,能百分百刷出十层被动!超高爆发无视魔女斗篷文丹青原创未经授权请勿转载丹心不改,青云直上!你们的老朋友丹青来啦。本篇内容,我们不聊三国不论水浒不谈皮肤,聊一聊大家最想掌握的三个BUG级技巧。这三个技巧,分别是光信后撤步如何操DOTATI10一串六夺冠的TeamSpirit没有像当年液体得到观众认可?因为液体没有大牌,没有奇迹哥,kky这种名人,哪怕是gh都是大名人。mc的先知玩的特别好,也是不ban的。kky当时参加了所有ti,至今应该也只缺席了ti10一届。gh几个绝活,光新人大讲堂活用跳刀多米,平民装配也可单刷5级任务新人大讲堂,开课!萌新进阶之路,已经给大家铺好啦。希望能帮助新船长们快速成长,也欢迎各位老船长一同探讨交流许多萌新以4级任务赚取LP点为生,大多数势力的LP点都可以换购一些常用的舰梦回华夏大陆华夏大陆诸神来袭!自由交易离线摆摊十年的聚散,再回华夏。华夏大陆诸神由端游原班人马亲自打造,游戏支持全新的十三档装备,全新版本全新技能,全新的游戏等你来玩。华夏大陆诸神秉持着经典的三大职业战士,法师和猎手。玩家可以DYG止步八强,一副好牌打得稀巴烂,网友小义得给情川写总结了2021年KPL秋季赛季后赛败者组第二轮的比赛全部结束,DYG以14的成绩不敌XYG战队,止步八强,同时无缘挑战者杯的名额,将要面临长达三个月的假期。虽然转型中的DYG战队追平了春愤怒的小鸟重制版forMac(休闲益智类游戏)v1。6。13216愤怒的小鸟重制版AngryBirdsReloaded是一款在Mac平台上的休闲益智类小游戏,该游戏戏以小鸟报复偷走鸟蛋的肥猪为游戏背景,讲述了小鸟与肥猪的一系列故事。小鸟们以自己身怒火一刀内功经脉用什么材料怒火一刀内功玩法攻略怒火一刀(同名热血挖矿迷失传说)三端互通折扣手游,今天给大家介绍一下游戏中的内功系统攻略,怒火一刀折扣礼包滴滴。在开服达到180之后,就会接取内功任务,完成任务之后去到新主城雪域之网易游戏再出新招,积极探索人脸识别功能,筑牢未成年人保护墙随着网络游戏用户中未成年人占比的持续增长,对未成年人的网络保护已经成为了社会重点关注的课题。为未成年提供一个良好的游戏环境,防止未成年在游戏内受到网络不良信息的侵害,网易游戏积极承
吕德华参加王者荣耀KPI杯,剑仙紧随其后,刘伟却想要夺冠最近,吕德华要参加王者荣耀KPI杯的比赛,不仅如此,还有很多的大主播也紧随其后。当然了,吕德华的神鸡营的名气比较大,人气也比较火爆,所以大家也很期待。但是剑仙也带领他的MDS战队参魔兽TBC瓦斯琪最红掉落,全通团仅分420金,排骨人太多了?魔兽世界TBC怀旧服T5团本削弱对玩家的影响主要有两个方面,一个是团本的参与率大幅上升,另外一个是T5级别的装备价格持续下降。团本参与率上涨很显然是一件百利而无一害的事情,但是装备LOL免费改名卡在哪领?LOL的免费改名活动,自从12月17日就在预告了,而今天终于算是放开入口了。值得注意的是,这次的改名卡并不是以道具的形式发放到你的游戏里面,而是一个改名的机会,其实不能叫改名卡。今怒火一刀热血传奇天衍神石怎么获得逆世战神传奇手游天衍神石用法哈喽,大家好呀,我是你们可爱的小彤呀,欢迎来到小彤的传奇路。今天给小伙伴们带来的是关于三职业传奇手游怒火一刀的相关攻略哦。怒火一刀的天衍神石有心的小伙伴们应该已经注意到了吧,那我们S26赛季增设两个新段位,但是上分却会变轻松,这是因为什么?对于王者荣耀的玩家来说,上分是每个赛季都要做的事情。但是,由于状态心态游戏匹配机制游戏环境游戏理解个人操作互动分歧思路分歧等原因,造成了输得莫名其妙,赢得坎坎坷坷的现状。也因为这种EVE常用操作指南1跳桥怎么走?按F10,可以打开星图,在联盟星域内,绿色的线就是2个不同星系的桥接,只要到达该星系,可以在太空中右键鼠标,在军团地址栏里有跳桥的位标,直接跃迁到0米,注意要接近跳桥Uzi又一神级单杀操作!女警贴脸单挑蛮王盲僧,结果都完成了击杀各位LPL的观众和英雄联盟召唤师大家好,这里是天下游戏汇。Uzi的复出是明年LPL春季赛大家最关注的看点之一,站在观众的立场上想要看看Uzi在退役两年之后重回赛场会有怎样的表现,U游戏野王是我哥(沈韵)说出来你们可能不信,我打游戏遇到了一个野王。然后我们网恋了,离谱的是这个野王是我哥。愉快的一天,我操纵着我的蔡文姬在峡谷遨游,然后我死了。在我还没有反应过来,脑子还在想着去哪里偷一2077警察为啥不开车追你?官方类比老头环引争议赛博朋克2077中的敌人AI系统曾受到许多玩家诟病,刚发售时敌对的警察会凭空刷新而且还不会开车追赶玩家这些功能在其它的开放世界都市题材游戏中很常见,为什么却在2077中缺席呢?近日PeRo战队补强内幕曝光,Longskr转会被针对,KX开出天价转会费今年PUBG世界赛上的PeRo战队可以说是非常可惜,好不容易从淘汰赛最后一局中突出重围,最后只获得了第六的成绩,这个成绩虽然不算是太差,但肯定不是左梓轩想要的结果,究其原因还是他们镜夜影迷踪特效首曝,天魔缭乱武陵仙君返场2选1,孙悟空笑了可乐要加冰,乔妹在你心,大家好我是小乔妹,每天为您分享有趣的王者荣耀新皮肤新版本,最新攻略等文章内容。王者荣耀即将迎来一款新的KPL限定皮肤,这款皮肤是给到了镜的,目前已经整官宣了