AP计算机科学A(APcomputer science A)复习备考攻略视频教程
43772 人在学
Redis中存在着单线程模型,并且单线程是重要的,对此很多人不理解。
本文主要讨论Redis中的单线程,并且讨论了为什么不使用多线程与单线程的4个好处,从而帮助大家更加了解。
单线程模型
首先,在谈论之前,我们需要注意的是,Redis的单线程指的是Redis的网络IO(6.x版本后网络IO使用多线程)以及键值对指令读写是由一个线程来执行的。
对于Redis的持久化、集群数据同步、异步删除等都是其他线程执行。
所以,永远不要说Redis只有一个线程。
这里的单线程,主要指的是Redis键值对读写指令的执行是单线程。
在正式的回答之前,让人感到足够严谨,而不是人云亦云地背诵一些博客。
这里摘选自官方的解释:因为Redis本身是基于内存的操作,所以CPU不会是Redis的瓶颈,对于Redis的瓶颈来说,主要是机器内存的大小或者网络带宽。
既然单线程容易实现,那么CPU不会成为瓶颈,所以我们就可以采用单线程的方案了。
为什么不需要多线程执行充分利用CPU?
执行每个任务之前,CPU需要知道是从哪里加载任务并开始运行的。也就是说,系统需要预先设置好CPU寄存器和程序计数器,这就是所谓的CPU上下文。
在切换上下文时,需要完成一系列的工作,这是一个非常消耗资源的操作。
如果你引入多线程开发,那么你就需要使用同步原语来保护共享资源的并发读写,这样无疑会增加代码的复杂性和调试难度。
单线程有什么好处?
1. 不会因为线程创建导致的性能消耗;
2. 避免上下文切换引起的CPU消耗,没有多线程切换的开销;
3. 避免了线程间的竞争问题,如添加锁、释放锁、死锁等,而无需考虑各种锁问题。
4. 代码更加清晰,处理逻辑简单。
结尾
本文主要讨论了Redis中的单线程模型,我们需要理解的是,Redis并不是单线程的,这里的单线程指的是Redis键值对读写指令的执行。
小编介绍了为什么不使用多线程,以及单线程的4个好处,从而帮助大家加深了解。
>>>>>>点击进入Python专题