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

企业网站开发需求文档广州市白云区网站建设维护

企业网站开发需求文档,广州市白云区网站建设维护,唐山网站建设赫鸣科技,精美ppt模板免费下载百度云目录 ①. Redis为什么选择单线程? ②. 既然单线程这么好,为什么逐渐又加入了多线程特性? ③. redis6的多线程和IO多路复用入门篇 ④. Redis6.0默认是否开启了多线程? ⑤. REDIS多线程引入总结 ①. Redis为什么选择单线程? ①…

目录

①. Redis为什么选择单线程?

②. 既然单线程这么好,为什么逐渐又加入了多线程特性?

③. redis6的多线程和IO多路复用入门篇

④. Redis6.0默认是否开启了多线程?

⑤. REDIS多线程引入总结


①. Redis为什么选择单线程?

①. 这种问法其实并不严谨,为啥这么说呢?

Redis的版本很多3.x、4.x、6.x,版本不同架构也是不同的,不限定版本问是否单线程也不太严谨

    1. 版本3.x ,最早版本,也就是大家口口相传的redis是单线程
    2. 版本4.x,严格意义来说也不是单线程,而是负责处理客户端请求的线程是单线程,但是开始加了点多线程的东西(异步删除)
    3. 最新版本的6.0.x后,告别了大家印象中的单线程,用一种全新的多线程来解决问题。—实锤

    ②. 有几个里程碑式的重要版本
    (5.0版本是直接升级到6.0版本,对于这个激进的升级,Redis之父antirez表现得很有信心和兴奋,所以第一时间发文来阐述6.0的一些重大功能"Redis 6.0.0 GA is out!")

     

    • ③. Redis3.x单线程时代但性能依旧很快的主要原因


      1.  

    1. 基于内存操作:Redis的所有数据都存在内存中,因此所有的运算都是内存级别的,所以他的性能比较高
    2. 数据结构简单:Redis的数据结构是专门设计的,而这些简单的数据结构的查找和操作的时间大部分复杂度都是 O(1),因此性能比较高
    3. 多路复用和非阻塞 I/O:Redis使用 I/O多路复用功能来监听多个 socket连接客户端,这样就可以使用一个线程连接来处理多个请求,减少线程切换带来的开销,同时也避免了I/O 阻塞操作
    4. 避免上下文切换:因为是单线程模型,因此就避免了不必要的上下文切换和多线程竞争,这就省去了多线程切换带来的时间和性能上的消耗,而且单线程不会导致死锁问题的发生

    • ④. 我们所说的Redis是单线程究竟何意?
    1. 主要是指Redis的网络IO和键值对读写是由一个线程来完成的,Redis在处理客户端的请求时包括获取 (socket 读)、解析、执行、内容返回 (socket 写) 等都由一个顺序串行的主线程处理,这就是所谓的“单线程”。这也是Redis对外提供键值存储服务的主要流程
    2. 但Redis的其他功能,比如持久化、异步删除、集群数据同步等等,其实是由额外的线程执行的。Redis工作线程是单线程的,但是,整个Redis来说,是多线程的

    • ⑤. Redis 4.0之前一直采用单线程的主要原因有以下三个

         

      2.使用单线程模型是Redis的开发和维护更简单,因为单线程模型方便开发和调试;

      3.即使使用单线程模型也并发的处理多客户端的请求,主要使用的是多路复用和非阻塞 IO

      4.对于Redis系统来说,主要的性能瓶颈是内存或者网络带宽而并非CPU

      ②. 既然单线程这么好,为什么逐渐又加入了多线程特性?

      • ①. 单线程也有单线程的苦恼(举个例子)
      1. 正常情况下使用del指令可以很快的删除数据,而当被删除的key是一个非常大的对象时,例如时包含了成千上万个元素的hash集合时,那么del指令就会造成Redis主线程卡顿
      2. 这就是redis3.x单线程时代最经典的故障,大key删除的头疼问题
      3. 由于redis是单线程的,del bigKey…(等待很久这个线程才会释放,类似加了一个synchronized锁,你可以想象高并发下,程序堵成什么样子?)
      • ②. 如何解决:使用惰性删除可以有效的避免Redis卡顿的问题

      • ③. 案列:

      1. 比如当我(Redis)需要删除一个很大的数据时,因为是单线程同步操作,这就会导致Redis服务卡顿
      2. 于是在Redis 4.0中就新增了多线程的模块,当然此版本中的多线程主要是为了解决删除数据效率比较低的问题的
      3. 因为Redis是单个主线程处理,redis之父antirez一直强调"Lazy Redis is better Redis",而lazy free的本质就是把某些cost(主要时间复制度,占用主线程cpu时间片)较高删除操作,从redis主线程剥离让bio子线程来处理,极大地减少主线阻塞时间。从而减少删除导致性能和稳定性问题

      • ④. 在Redis 4.0就引入了多个线程来实现数据的异步惰性删除等功能,但是其处理读写请求的仍然只有一个线程,所以仍然算是狭义上的单线程。

      ③. redis6的多线程和IO多路复用入门篇

      • ①. 对于Redis主要的性能瓶颈是内存或者网络带宽而并非CPU
      • ②. 最后Redis的瓶颈可以初步定为:网络IO(redis6,真正多线程登场)

      • ③. Unix网络编程中的五种IO模型

      1. Blocking IO - 阻塞IO
      2. NoneBlocking IO - 非阻塞IO
      3. IO multiplexing - IO多路复用
      4. signal driven IO - 信号驱动IO
      5. asynchronous IO - 异步IO
      • ④. IO multiplexing - IO多路复用

         

         

        ④. Redis6.0默认是否开启了多线程?

        • ①. Redis将所有数据放在内存中,内存的响应时长大约为100纳秒,对于小数据包,Redis服务器可以处理8W到10W的QPS,这也是Redis处理的极限了,对于80%的公司来说,单线程的Redis已经足够使用了

        • ②. 在Redis6.0中,多线程机制默认是关闭的,如果需要使用多线程功能,需要在redis.conf中完成两个设置

        ⑤. REDIS多线程引入总结



        1.  



        1.  

        http://www.yayakq.cn/news/840205/

        相关文章:

      1. 建设人才证书查询网站h5作品
      2. 怎么在wordpress上设计网站手机wordpress怎么保存图片
      3. 网站标题几个字合适杭州门户网站开发
      4. 外贸建站与推广如何做互联网招商项目
      5. 织梦做商城类网站教程现在做一个网站多少钱
      6. 12380 举报网站建设电脑网站打不开什么原因
      7. 有了主机如何做网站网站首页该怎么做
      8. 已经有网站怎么做淘宝客程序员做电商网站的公司好吗
      9. 合肥市做网站的公司有哪些网站建设实践课程报告
      10. 营销型建设网站实训总结模板下载免费网站
      11. 游网站建设方案内容dede学校网站
      12. 广东企业网站制作专业网站建设公司兴田德润优惠吗
      13. 婚恋网站建设太原百度公司找山西云起时
      14. 建立网站来网上销售的英文自助定制网站开发公司
      15. 免费网站建设站忘记网站后台账号
      16. 网站建设中asp文件WordPress页面加分类文章
      17. 汕头网页设计公司哈尔滨seo优化效果
      18. 网站及微站建设合同网站建设资料总结
      19. wordpress建站要多久wordpress和蝉知
      20. 网站产品推广wordpress 找回密码邮件错误
      21. 个人主题网站设计论文软件开发还是网站开发好
      22. 智慧团建登陆网站苏州网站建设企业网站制作
      23. 手机网站图片 触摸 放大代码 js网页被禁用了怎么解除
      24. 网站开发流程数据库简约风格办公室设计
      25. 对网站主要功能界面进行赏析做网站的视频教程
      26. 学风建设网站版块创建企业
      27. 哪些网站可以免费做产品推广网站开发的重难点
      28. wordpress如何替换掉网址廊坊seo推广
      29. 门户网站开发要多久微信分销系统多少钱
      30. it类网站logo在线设计图片