Redis是单线程模型,为什么效率还这么高呢?【面试】

12 篇文章 0 订阅

Redis的效率高低以MySQL为参照物~

Redis是单线程模型,效率为什么这么高,速度这么快?

  1. redis访问内存,MySQL数据库则是访问硬盘。
  2. redis核心功能比数据库的核心功能更简单。详细来说,数据库对于数据的插入删除查询时,可能不仅是简单的插入删除查询操作,也可能会涉及到其他操作,因为数据库中的各种约束使得数据库要做一些额外的工作~  而redis做的核心功能更简单,干的活就少,提供的功能相比于mysql也是少了不少~
  3. 单线程模型,避免了一些不必要的线程竞争开销。redis中每个操作都是短平快的,也就是简单的操作一下内存数据,不是什么特别消耗CPU的操作,就算使用多线程,效率提升也不见得很大~  【这里大家其实也就明白了,为什么不要使用keys * 这种命令,执行时间可能会太长,单线程就一直卡在这个操作了,后续可能就会把MySQL搞崩】
  4. 处理网络IO的时候,使用了epoll这样的IO多路复用机制。

什么是IO多路复用? 

        我们在之前的学习中,例如在TCP的学习中,编写了一个回显服务器。在这里面,我们采用的方法就是使用一个线程来管理一个socket,并且要给每个客户端都分配一个socket,那在实际情况中,必然是会有多个客户端的,也就是会同时存在多个socket。

        我们仔细观察会发现,每个客户端和服务器之间并不是无时无刻的传输数据,大多数时间都是在等待中。因此就提出了IO多路复用,使用一个线程来管理多个socket,例如有三个客户端,处理了客户端1的请求后,进入了等待时间,线程又去处理客户端2的操作,进入等待,又去处理客户端3的操作,当其中有任意一个客户端又有了新的请求后,epoll通过事件通知来处理新的请求~ 但在这里这需要注意,IO多路复用的适用场景必须是,要干的事情交互不是很频繁,大部分时间都是在等待中~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙洋静

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值