请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于redis线程模型

老师我有三个小问题想请教,在网上看了一些答案也没底,故来请教,希望听下老师的理解

  1. redis的单线程只是算负责监听socket io吗,那后面真正处理任务的线程又什么呢
  2. 怎么理解 redis瓶颈在io而非cpu(我看很多地方都这么说 但还是不太理解)
  3. redis线程模型 从单线程到redis6.0多线程 怎么看这个现象呢
    十分感谢!!!

正在回答

1回答

嗯嗯,老师也很乐意为大家解决学习中的其他难题。

  1. 对于redis的单线程,只是限于网络IO的线程,用一个线程处理IO是常见的做法,这个线程在接受到命令后,会队列的方式下发到后端模块,在后端,是有多个线程在工作的,这整个过程是异步的,可以了解一下事件驱动模型的相关知识,比如:epoll、select这些。

  2. redis是数据库,而且是k-v数据库,这意味着它的主要功能是根据key,检索对应的value,在整一个过程当中,读写存储器占用了较多的时间,同时网络IO也占用了较多的时间,而计算只占用了很小的比重,这意味着对CPU的性能要求并不高,所以瓶颈在IO而不是CPU,可以列举瓶颈在CPU的一些例子对比一下,比如:渲染图像、数学运算,这些则是CPU密集型,而非IO密集型。

  3. 本质还是redis越来越多人使用了,社区等对redis提出了更高的要求,在单线程的场景下,编程模型简单,在初期,可以迅速发展;而随着越来越多的用户使用,对redis也提出了更苛刻的要求,因此引入了redis以进一步提升性能,当然,redis本身也会越来越复杂,这也才有了redis之父退出维护redis的事情。

希望对你有所帮助。

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号