Redis为什么这么快?

Redis的单线程模型

说Redis是单线程的并不是说Redis服务器进程内部只有一个线程,只是redis只有一个线程去执行全部指令,比如说网络I/O部分采用的有多线程

为什么Redis是单线程模型还能这么快

这里说的快是相对于其他数据库而言,比如MySQL数据库。为什么这么快的原因,主要有以下几点

  1. Redis访问内存,MySQL访问硬盘。内存的读取效率可比硬盘高好几个数量级。
  2. Redis的核心功能比MySQL这样的数据库简单很多。当你读取效率快的时候,操作很复杂,其实一样会很慢。因此Redis的核心功能都比较简单,不想MySQL又是联表查询,又是分组,又是过滤…
  3. 单线程避免了一些不必要的线程竞争开销。Redis都是一些短平快的操作,就简单的操作一下内存数据,不是什么消耗CPU的操作,单线程反而不显劣势。
  4. 处理网络I/O的时候使用了epoll这样的IO多路复用技术。在执行多个事件的时候,遇到一个事件需要等待,它不会等待这个事件完成后再去执行下一个,而是先去执行下一个。当前面事件完成时会执行一个epoll(事件通知机制/回调机制)告诉它完成了,他去取结果就可以了。就有点像你喜欢吃的菜在不同的饭馆,你今天中午就想都吃,你就是在A家点了,不等它做好就去B家继续点菜,当A家的菜做好的时候,老板会叫你,说做好了,你再去付款拿走,这样可以节约很多时间。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值