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

焦作网站开发关于做膳食的一些网站

焦作网站开发,关于做膳食的一些网站,江阳建设集团网站,关键字优化价格技术解析核心误区#xff1a;Redis 6.0是完全多线程的吗#xff1f;No. Redis 6.0引入的多线程#xff0c;只用于网络I/O的读写和数据的解析。而核心的命令执行#xff08;比如 GET, SET, HGETALL 等#xff09;依然是单线程的。Redis的架构演进#xff0c;就像是把一个复…技术解析核心误区Redis 6.0是完全多线程的吗No. Redis 6.0引入的多线程只用于网络I/O的读写和数据的解析。而核心的命令执行比如 GET, SET, HGETALL 等依然是单线程的。Redis的架构演进就像是把一个复杂的任务分解成“听你说话 - 思考并做事 - 回答你” 这三个步骤。• 听你说话接收网络请求解析命令。• 思考并做事执行命令。• 回答你将结果返回给客户端。在Redis 6.0之前这三个步骤都由一个单线程完成。这个单线程模型在CPU计算上非常高效但它最大的瓶颈在于“听你说话”和“回答你”这两个网络I/O环节。Redis 6.0的多线程优化只针对**“听你说话”和“回答你”这两个网络I/O环节**进行了并行化而最核心的“思考并做事”环节依然保留了单线程。Redis 6.0多线程的执行流程1. 主线程 (Main Thread)• 监听连接: 负责accept()新的客户端连接。• I/O多路复用: 负责epoll_wait等系统调用等待网络事件的发生。2. I/O线程 (Worker Threads)• 处理网络读写: 主线程将准备就绪的Socket已收到数据或可写入数据分发给这些I/O线程。• 解析请求: I/O线程负责从Socket中读取数据解析出命令。• 发送响应: I/O线程负责将执行结果写入Socket发送给客户端。3. 主线程 (Main Thread) 再次登场• 执行命令: I/O线程解析完命令后会将命令提交给主线程。主线程仍然是唯一的命令执行者。它会将所有客户端提交的命令按顺序、单线程地执行保证了Redis命令的原子性和数据一致性避免了锁的开销。这个过程就像一个经典的生产者-消费者模型I/O线程作为生产者负责处理网络数据包将命令“生产”出来主线程作为消费者负责从队列中取出命令并执行。配置参数Redis 6.0的多线程功能默认是关闭的。你可以通过以下参数来开启和配置 # 开启多线程 io-threads-do-reads yes # 设置I/O线程数量建议设置为CPU核心数-2或-4 io-threads 4 故事场景米其林餐厅的“主厨与服务员”模式你Redis是一家米其林三星餐厅的主厨Main Thread。你以精湛的厨艺执行命令闻名但你一次只能做一道菜并且绝不允许任何人插手你的烹饪过程单线程执行。传统模式 (Redis 6.0之前): “主厨事必躬亲”• 工作流程:你既是主厨又是餐厅的服务员。1. 接待顾客: 你亲自到门口迎接顾客accept连接。2. 听顾客点单: 你亲自听顾客点单并把菜单写下来网络I/O读写。3. 烹饪: 你回到厨房专心致志地做菜执行命令。4. 上菜: 你亲自把菜端给顾客并收盘子网络I/O读写。• 瓶颈:你做菜的速度很快但由于要花大量时间在接待、听单、上菜这些琐碎的体力活上你大部分时间都耗在了餐厅大堂和顾客周旋真正花在厨房里做菜的时间反而很少。这导致餐厅的整体效率不高。现代模式 (Redis 6.0之后): “主厨与多位服务员”模式为了解决这个瓶颈你雇佣了一个专业的服务员团队I/O Threads。• 工作流程:1. 总指挥: 你主厨依然坐在厨房里通过一个监视器epoll同时关注着所有餐桌Socket。2. 服务员团队: 当某个餐桌的顾客客户端点完单或需要上菜时监视器会提醒你。3. 分派任务: 你会立刻把这个任务派给一个空闲的服务员。服务员小李去收菜单网络I/O读服务员小张去上菜网络I/O写。4. 主厨的核心工作: 服务员团队I/O Threads将收到的菜单命令送回厨房你主厨仍然是唯一的烹饪者。你按顺序、单线程地做菜并把菜品放在“上菜口”。5. 服务员团队再次出动: 菜做好后服务员团队会再次从“上菜口”把菜端走送到对应的餐桌。• 优化效果:• 主厨效率飞升: 你主厨从繁重的I/O杂活中彻底解脱出来可以全身心地投入到你最擅长的烹饪命令执行上。• 整体效率提升: 即使来了100桌客人只要你有足够多的服务员他们可以并行地收单、上菜而主厨则可以稳定、高速地处理源源不断的菜单。故事总结特性Redis 6.0之前Redis 6.0之后核心执行✅ 单线程 (主厨亲自做饭)✅ 单线程 (主厨依然是唯一烹饪者)网络I/O❌ 单线程 (主厨兼服务员)✅ 多线程 (专业服务员团队分工合作)工作模式命令执行被I/O阻塞I/O和命令执行分离核心比喻主厨一人包办一切主厨专心烹饪服务员团队处理杂务结论 Redis 6.0引入多线程并非要推翻其赖以成名的“单线程模型”。相反它是一种精准的、有针对性的优化。通过将单线程模型中唯一的瓶颈——网络I/O剥离并交由多线程并行处理使得Redis在不牺牲原子性、简-洁性的前提下将性能推向了新的高度。
http://www.zqtcl.cn/news/565670/

相关文章:

  • 做网站字体大小网站建设是属于虚拟产品吗
  • 网站的内链怎么做校园网建设网站特色
  • 优化网站标题企业的网站一般做哪些维护
  • 聊天网站备案南阳定制网站制作价格低
  • 广州镭拓科技网站建设公司长春招聘
  • 视频网站app怎么做跨境贸易电子商务服务平台
  • 丽水网站seo餐饮vi设计案例
  • 娄底网站建设报价山东省住房和建设厅注册中心网站
  • 公司网站建设工作重点网站建设吉金手指专业11
  • vue做前台网站怎么做钓鱼网站吗
  • 个人建设网站如何定位烟台h5网站开发
  • 广州网站定制多少钱html5游戏开发
  • 使用angularjs的网站域名怎么解析到服务器
  • 地方门户网站盈利模式宝塔 wordpress
  • 西安网站备案软件开发基础教程
  • 有服务器做网站软件系统开发怎样容易
  • 网站建设的公司有发展吗织梦婚纱网站模板
  • 淘宝销售书网站建设方案wordpress调用评论数据
  • 搭建网站需要什么软件苏州吴中区建设局工程网站
  • 长沙市网站推广公司wordpress 弹窗登录插件
  • 网站策划怎么做内容朔州网站建设公司
  • 宁波拾谷网站建设蚌埠网站建设中心
  • 青岛专业设计网站公司加拿大广播公司
  • 盘锦市建设局网站地址八桂职教网技能大赛
  • 投资建设一个网站多少钱和淘宝同时做电商的网站
  • 做动物网站的素材icp备案 网站备案
  • 找人建网站唐山网络运营推广
  • 福建省住房建设厅网站6网站简历模板
  • 医疗网站模版杭州工商注册
  • 正保建设工程网站logo创意