> 文章列表 > 【redis】单线程 VS 多线程(入门)

【redis】单线程 VS 多线程(入门)

【redis】单线程 VS 多线程(入门)

【redis】单线程 VS 多线程(入门)

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 【redis】单线程 VS 多线程(入门)
  • 前言
  • 一、面试题
  • 二、redis为什么选择单线程
    • 1.单线程?多线程?
    • 2.“单线程”
    • 3.单线程时代redis3 为什么还这么快的原因
    • 4. redis4 之前一直使用单线程的原因
  • 三、==既然单线程这么好,为什么逐渐又增加了多线程特性==
    • 1.单线程也有痛点
    • 2.为什么引入多线程 删除大key时会阻塞
  • 四、redis6/7 的多线程特性和IO多路复用(入门)
    • 1.影响redis性能的三大因素
    • 2.redis的网络IO---redis的性能瓶颈
    • 3.==主线程(读写)和IO线程(客户端连接)是怎样协作完成处理请求的== `四个阶段`
    • 3.Unix网络编程中的五种IO模型
      • `IO多路复用`
        • a、FileDescriptor是什么?即文件句柄 相当于一个索引值
        • b、IO多路复用是什么?一种同步的IO模型,实现一个线程监视多个FileDescriptor
        • c、场景案例, epoll是什么?
        • 总结 IO多路复用就是 只使用一个服务器进程可以同时处理多个套接字描述符(FileDescriptor)连接
        • 最终解释:redis为什么这么快?
    • 简单说明
      • ==**1、主线程(读写操作) 和 IO线程(耗时的网络连接) 协作**== 精简版
        • 协作前:`即redis3 的单线程时代,网络连接和读写操作都是单线程`
          • 协作后:`redis6开始,新增多线程,将网络连接和读写操作分离,让读写操作串行、单线程执行,而耗时的网络连接则是通过IO多路复用+epoll函数去处理`
      • 2、小总结
  • 五、redis7 默认是否开启了多线程?
    • 1、默认不开启,如何开启?
  • 六、我还是曾经那个骚年

前言

【redis】单线程 VS 多线程(入门)


提示:以下是本篇文章正文内容,下面案例可供参考

一、面试题

【redis】单线程 VS 多线程(入门)

二、redis为什么选择单线程

1.单线程?多线程?

A:看版本,在redis3时是单线程,redis4 为部分加入了多线程,而在redis6/7 之后就是多线程
【redis】单线程 VS 多线程(入门)
【redis】单线程 VS 多线程(入门)

2.“单线程”

执行缓存插入的命令都是单线程的
【redis】单线程 VS 多线程(入门)
【redis】单线程 VS 多线程(入门)

3.单线程时代redis3 为什么还这么快的原因

【redis】单线程 VS 多线程(入门)
【redis】单线程 VS 多线程(入门)

4. redis4 之前一直使用单线程的原因

【redis】单线程 VS 多线程(入门)


三、既然单线程这么好,为什么逐渐又增加了多线程特性

1.单线程也有痛点

【redis】单线程 VS 多线程(入门)

2.为什么引入多线程 删除大key时会阻塞

【redis】单线程 VS 多线程(入门)

四、redis6/7 的多线程特性和IO多路复用(入门)

【redis】单线程 VS 多线程(入门)

1.影响redis性能的三大因素

【redis】单线程 VS 多线程(入门)

2.redis的网络IO—redis的性能瓶颈

网络命令—多线程
读写命令—单线程
【redis】单线程 VS 多线程(入门)

3.主线程(读写)和IO线程(客户端连接)是怎样协作完成处理请求的 四个阶段

【redis】单线程 VS 多线程(入门)
【redis】单线程 VS 多线程(入门)
【redis】单线程 VS 多线程(入门)

3.Unix网络编程中的五种IO模型

【redis】单线程 VS 多线程(入门)

IO多路复用

【redis】单线程 VS 多线程(入门)
【redis】单线程 VS 多线程(入门)

a、FileDescriptor是什么?即文件句柄 相当于一个索引值

【redis】单线程 VS 多线程(入门)

b、IO多路复用是什么?一种同步的IO模型,实现一个线程监视多个FileDescriptor

【redis】单线程 VS 多线程(入门)

c、场景案例, epoll是什么?

【redis】单线程 VS 多线程(入门)
场景说明 epoll相当于第三种, 总监视器,谁需要连接,就响应谁,没有请求就不打扰
【redis】单线程 VS 多线程(入门)

总结 IO多路复用就是 只使用一个服务器进程可以同时处理多个套接字描述符(FileDescriptor)连接

【redis】单线程 VS 多线程(入门)
图示:
【redis】单线程 VS 多线程(入门)

最终解释:redis为什么这么快?

IO多路复用 + epoll函数使用,不仅仅是单线程命令 + redis安装在内存中
【redis】单线程 VS 多线程(入门)

简单说明

【redis】单线程 VS 多线程(入门)

1、主线程(读写操作) 和 IO线程(耗时的网络连接) 协作 精简版

协作前:即redis3 的单线程时代,网络连接和读写操作都是单线程

【redis】单线程 VS 多线程(入门)

协作后:redis6开始,新增多线程,将网络连接和读写操作分离,让读写操作串行、单线程执行,而耗时的网络连接则是通过IO多路复用+epoll函数去处理

【redis】单线程 VS 多线程(入门)

2、小总结

【redis】单线程 VS 多线程(入门)

五、redis7 默认是否开启了多线程?

1、默认不开启,如何开启?

【redis】单线程 VS 多线程(入门)
【redis】单线程 VS 多线程(入门)

六、我还是曾经那个骚年

读写命令是单线程,网络连接变成了多线程
【redis】单线程 VS 多线程(入门)