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

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 性能。

异界事务所这周从4000冲上了王者简单写点斗鸡心得作者NGAGodisaDeadII一整体思路火鸡本身是一个韧性非常低的角色,在没有放技能的时候极其容易吃到各种硬直,这周最优解应该是控线打法,但是这一打法对于其他队友的cd装前排的洛克王国张灯结彩活动玩法详细介绍洛克王国张灯结彩活动是今天开始的,是在舞会厅进行的,活动可以获取元旦宠物和洛克印章,这个活动相对来说有些困难,今天给大家带来了详细的玩法,小伙伴们可以作为参考,一起看下洛克王国张灯原神2021年度总结,往期角色UP池大汇总,你是从哪个版本开始的?我已经有过一次旅行。所以,你也要像我一样抵达终点,才能在自己的眼中,留下这个世界的沉淀。大家好,我是boyue,感谢打开这篇原神游戏文。boyue会经常分享一些原神资讯与攻略给大家阴阳师食鸦切协战流新区开荒顶配组合,蓝帽金框不是梦作者NGA为什么id全被注册1。最近玩食鸦切上瘾了,实在是太爽了,啥阵容都可以切过去,我最开始研究食鸦切全是斗鸡的,这对于101天的我的练度实在难以做到。我就想发个针对新区开荒食鸦元旦有惊喜,请关注战舰世界线上任务限时奖励元旦有惊喜,战舰世界线上的新年庆祝活动已火热开启,玩家每日登录游戏客户端,领取免费的大礼包,不仅可以参与全球庆典的主题活动,还有新年之夜的狂欢好礼领到手酸。仅需每日打卡游戏,当天在文明与征服快速刷军功技巧介绍文明与征服游戏中怎么快速刷军功?有没有什么高效的方法!很多玩家都想知道!今天小编就为大家分享一下游戏中快速刷军功的方法技巧!有需要的玩家们和小编一起来了解一下吧!文明与征服快速刷军开年放大招!最受期待网游终于开服,生死狙击2公布重磅消息前段时间,有着中国游戏界奥斯卡之称的金翎奖获奖名单公布。国产FPS界的一匹黑马生死狙击2杀出重围,荣获玩家最期待的网络游戏奖项!生死狙击2获此奖,可以说是实至名归。因为该游戏的制作宠物需要的是技能吗?宠物需要的是技能吗?先祝大家新年快乐,2022啥都顺利点。好久不见,今天聊聊下个版本更新的宠物技能。我事后诸葛亮的说一句,我早就预料到宠物会更新新的属性,不同的皮肤有不同的效果才对天龙老玩家几万块钱才生出的顶变比翼鸟?谁还没个心动情兽啊每个老玩家,大概都有自己喜欢的宝宝。比如小编吧,就特别喜欢北极熊,虽然不值钱,玄武岛就能抓到,但是小编刚开始玩游戏时,就是带着一只粉色血祭北极熊,花费了小编好几天的早饭钱,真正的心热血传奇不会还有老玩家不知道这几个超爆的散人BOSS把?爆率这个词实际上是热血传奇游戏中玩家经常讨论的一个词。说白了就是怪物被杀后掉落稀有高级装备的概率。在游戏中,各种怪物会根据强弱程度来决定爆的东西。其实程序员早就编写好了概率算法,也原神萌新玩家入坑指南,星辉不要用来换抽卡,世界等级可降低哈喽大家好!我是慢慢说游戏。每天带来最新游戏资讯,分享实用游戏攻略,喜欢的话记得关注我!本期内容寒假快到了学生党也将迎来期待已久的假期,放假自然少不了玩游戏娱乐一下,到时候相信会有
详解静步的作用,合理利用静步技巧,成为高手必经之路很多新手朋友在玩CSGO的时候,并不总是知道什么时候该静步,什么时候不该静步。他们真的不明白什么时候该静步。在许多情况下,您可以获胜的许多情况是今天就来探讨一下CSGO中静步的问题我心目中的电竞国家队,你们有没有去投票呢?冬日生活打卡季明年22年,亚运会将在杭州举办。而在今年11月的时候,杭州亚组委公布了一件事,22年第19届亚洲运动会,英雄联盟,王者荣耀,和平精英,FIFAOnline4(亚运版本云顶最强阵容又来啦,黑白魔法师秒杀全场,轻松上分系列兄弟姐妹们,克拉师又来了。大师以上可以参考这套上分阵容说1。23c版本的现版本双城中,最多人的阵容就是黑白魔法师的系类。选择44系类的黑白魔法师,成型了简直是稳稳的吃分。也不是完全王者荣耀皮肤优化,嫦娥源梦3号上线,末日机甲祈雪祝灵年末公布相信小伙伴们都知道,王者荣耀中的一些皮肤因为上线时间太早所以显得质量比较一般,所以需要进行调整优化,最近官方就公布了日程。最近的当然就是嫦娥拒霜思皮肤,这款皮肤属于源梦系列,也就是王者荣耀英雄调整,雅典娜移除大招减速效果,新英雄暃全面削弱相信小伙伴们都知道,王者荣耀新版本很快就要上线了,最近体验服中的英雄也有很多的调整,现在赶紧来看看吧!首先就是雅典娜。雅典娜这个英雄在当前版本中的胜率一直在战士中的排名不低,但出场jojo第六部王者归来?衍生吃鸡游戏爆火,新角色迪亚波罗加入最近JOJO的奇妙冒险石之海已于12月1日在B站上线12集,目前在豆瓣上评分为高达9。7分。JOJO的奇妙冒险石之海是jojo奇妙冒险的第六部,前几部作品早就使得jojo系列拥有了韦神的4AM没能创造奇迹,Tyloo却在CSGO不断突破,成为FPS至高者说起来,最近绝地求生PGC2赛事正在进行中。只不过,本次参赛队伍并没有韦神的4AM,所以或多或少让人感觉该赛事在国内的讨论热度并不是很高。毕竟,韦神的4AM绝对算得上是流量与实力兼侠客冰雪冰雪单职业传奇手游年末巨作,新手攻略哈喽,大家好!我是动若,又跟大家见面了。今天动若给大家带来了最近新上线的冰雪传奇手游侠客冰雪。(文末有惊喜)全新玩法,做任务即可获得免费赞助只需玩家动动自己的手指,各种会员赞助应有手游LOL2。6版本更新内容前瞻(1)新英雄正义天使凯尔与堕落天使莫甘娜登场,这对天使姐妹降临峡谷,召唤师们可以前往正义之路活动探索她们的故事。(2)对英雄祖安狂人蒙多医生进行了视觉和玩法更新,全新模型和技能将带零之战线电脑版逍遥模拟器电脑上玩零之战线零之战线是一款二次元放置类手游,玩家作为军校毕业的优等生,将指挥武器少女战队与被污染的机械兽战斗,在夺回地面控制权的同时,迎击与调查隐藏在深处的秘密。现在,为了维护人类的文明,请战那些年玩过的单机游戏01,流星蝴蝶剑,曾经的单机狂潮十几年,网络还不是很发达,我们玩着手柄,玩的是单机游戏。而当时引起了单机狂潮的一部游戏,便是流星蝴蝶,有人说经典,有人说不经典。但经不经典我不管,我是很喜欢这一款。记得在2004年