【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为什么选择单线程
1.单线程?多线程?
A:看版本
,在redis3时是单线程,redis4 为部分加入了多线程,而在redis6/7 之后就是多线程
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是什么?
场景说明 epoll相当于第三种, 总监视器,谁需要连接,就响应谁,没有请求就不打扰
总结 IO多路复用就是 只使用一个服务器进程可以同时处理多个套接字描述符(FileDescriptor)连接
图示:
最终解释:redis为什么这么快?
IO多路复用 + epoll函数使用,不仅仅是单线程命令 + redis安装在内存中
简单说明
1、主线程(读写操作) 和 IO线程(耗时的网络连接) 协作 精简版
协作前:即redis3 的单线程时代,网络连接和读写操作都是单线程
协作后:redis6开始,新增多线程,将网络连接和读写操作分离,让读写操作串行、单线程执行,而耗时的网络连接则是通过IO多路复用+epoll函数去处理
2、小总结
五、redis7 默认是否开启了多线程?
1、默认不开启,如何开启?
六、我还是曾经那个骚年
读写命令是单线程,网络连接变成了多线程