关于redis线程模型

来源:14-3 课程总结-计算机网络

sadcloud

2020-08-01

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

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

1回答

咚咚呛

2020-08-01

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

  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
0

(新版)计算机基础,计算机组成原理+操作系统+网络

编程之前先学这门课,系统补足计算机基础知识,夯实编程地基

7739 学习 · 1580 问题

查看课程