redis为什么是单线程及高并发快的三大原因

redis的高并发和快速的原因

  1. redis是基于内存的,内存的读写速度极快
  2. redis是单线程的,省去了很多上下文切换线程的时间
  3. redis采用的多路复用技术,可以处理并发的连接,非阻塞IO内部实现采用epoll

为什么redis是单线程的

  1. 官方答案:因为redis是基于内存的,CPU不是redis的瓶颈,redis的瓶颈最有可能就是内存的大小或者网络宽带
    既然单线程容易实现,CPU又不会称为瓶颈:
  2. 性能指标:关于redis的性能,官方网站也有,普通笔记本轻松处理每秒几十万的请求
  3. 详细原因:
    (1)不需要各种锁的性能消耗,
    (2)单线程多进程的集群方案
    (3)CPU消耗

redis单线程的优势和劣势

  • 单进程单线程优势
  1. 代码更清晰,处理逻辑更简单
  2. 不用去考虑各种锁的问题,不存在加锁和释放锁操作,更不用担心出现死锁导致的性能问题
  3. 不存在多进程或者多线程导致的切换而消耗CPU
  • 单进程单线程的劣势
  1. 无法发挥多核CPU性能,不过可以通过在单机开多个redis实例来完成

IO多路复用技术

  1. redis采用网络IO多路复用技术来保证在多连接的时候,系统的高吞吐量
  2. 多路指的是多个socket链接,复用指的是复用同一个线程,多路复用技术主要由三种select、poll、epoll
    epoll是最新的也是目前最好用的多路复用技术
  3. 采用IO多路复用技术可以让单个线程高效的处理多个链接,且redis在内存中操作数据的速度非常快,这两点使redis具有很高的吞吐量

redis高并发快总结

  1. redis是基于内存的,内存读写速度极快
  2. redis是单线程的,省去了很多上下文切换线程的时间
  3. redis采用IO多路复用技术,使得单线程能高效的处理多个链接,提高吞吐量

redis采用IO多路复用技术,单线程能够高效处理多个链接,非阻塞IO,底层基于epoll
将多个socket连接对应的FD文件描述符注册到epoll中去,
epoll去监听读、写、连接、关闭等事件,而且epoll的事件通知要比select的轮询快很多

posted @ 2022-03-30 16:58  专职  阅读(273)  评论(0编辑  收藏  举报