ccmouse老师,我想问个关于redis的问题
来源:6-5 Java数据类型、拆箱和装箱

sadcloud
2020-08-01
老师我有三个小问题想请教,在网上看了一些答案也没底,故来请教,希望听下老师的理解
- redis的单线程只是算负责监听socket io吗,那后面真正处理任务的线程又什么呢
- 怎么理解 redis瓶颈在io而非cpu(我看很多地方都这么说 但还是不太理解)
- redis线程模型 从单线程到redis6.0多线程 怎么看这个现象呢
十分感谢!!!
写回答
1回答
-
ccmouse
2020-08-03
首先redis的快很大程度上因为它的单线程。单线程就不需要处理“锁”,“同步”之类的问题。redis对cpu的要求无非就是解析用户发来的请求,到内存中去查找键值锁对应的数据,这些任务的确对CPU的要求不高。但是redis定位为高并发,要处理巨大QPS的请求,瓶颈的确在IO上。
6.0之前的redis主线程负责监听请求,解析请求,处理请求等。它也有一些后台进程,做些后台任务比如清理脏数据以及关闭文件等。监听io和“真正的处理任务”都是在单一线程完成。
6.0推出的多线程正是像同学描述的,多个线程监听io,后面有一个真正处理任务的单线程。监听io的线程负责监听,socket读写,请求的解析等。这些做成多线程之后能够利用到多核CPU的优势。但后面真正做查询或是修改的,还是一个单一的线程。
00
相似问题