下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

Redis中的单线程模型重要性

作者:匿名     来源: Python点击数:1117发布时间: 2021-10-25 20:49:55

标签: Python学习Redis单线程

大神带你学编程,欢迎选课

  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专题

赞(12)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程