ccmouse老师,我想问个关于redis的问题

来源:6-5 Java数据类型、拆箱和装箱

sadcloud

2020-08-01

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

  1. redis的单线程只是算负责监听socket io吗,那后面真正处理任务的线程又什么呢
  2. 怎么理解 redis瓶颈在io而非cpu(我看很多地方都这么说 但还是不太理解)
  3. 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的优势。但后面真正做查询或是修改的,还是一个单一的线程。

0
0

Google面试官亲授-Java面试新手尊享课

为面试新手量身定制的Java面试尊享课,解锁“鲤鱼跃龙门”的妙招

2853 学习 · 180 问题

查看课程