数据库
首页 > 数据库> > Redis 基础之单线程多线程

Redis 基础之单线程多线程

作者:互联网

何为单线程/多线程,何为单核多核

程序中写的代码,结果还是在电脑硬件的基础上执行,所谓的 单线程多线程 就相当于是cpu干活的时候 拆了几个任务,而单核 就是 一个cpu 多核就是多个cpu

生活故事

单核: 一个人生活
多核: 夫妻一起生活
单线程:洗衣服–做饭–扫地
多线程:洗着衣服做着饭还可能在扫着地
单核单线程:一个人洗衣服–做饭–扫地 串行 (按部就班)
单核多线程:一个人洗着衣服做着饭还可能在扫着地 并发(看似同时其实不然内部是按部就班)
多核单线程:其中一个人洗衣服–做饭–扫地
多核多线程:俩个人 一个洗着衣服 另一个在做饭 并行(真正的同时进行)

OK,单核我理解,反正就一个人呗,不管单线程还是多线程,活都是我一个人做,只不过单线程就是一件一件做,多线程看起来就是同时做多件呗。
注意多线程表面上看似好像在同时做事情,其实微观上是有时间先后的,可能只有纳秒级别,就像做饭扫地一起的时候,也还是会大脑指令一个个传达,手动一下,脚在动一下这样,尽管看起来做饭扫地都在进行。

那多核呢?
多核多线程,是真正意义上的 同时进行,多个线程同时进行,但是cpu还是串行按着顺序分配时间指令的。

Redis为什么采用单线程

为什么这样做?
首先,单线程多线程是提高cpu利用率的,而redis基于内存,CPU不会成为瓶颈,上面也知道了,而且单核多线程涉及到cpu切换上下文,这是个费资源费时间的过程。
所以单线程避免了这些,从而就能变快。那肯定用这个单线程处理请求了
另外,命令用单线程安全,数据放心

那多核呢?
不就相当于一个人干活,另一个不干活了吗?
我们可以开启俩个redis服务实例呀,这样不就解决了,既是单线程又利用多核;

Redis完全是单线程吗?

答案是不;redis的单线程指的是 网络请求模块 是单线程
而redis的模块是有四部分的
在这里插入图片描述
比如事件处理器内并不是只有一个线程;

标签:单核,单线程,redis,Redis,多核,多线程,cpu
来源: https://blog.csdn.net/Marzlam/article/details/117693265