美文网首页
redis是单线程的,如何处理并发请求?

redis是单线程的,如何处理并发请求?

作者: 鸿雁长飞鱼龙潜跃 | 来源:发表于2019-05-30 14:40 被阅读0次

疑问:

redis是单线程的,如何并发处理多个请求?

下面是我个人的理解。

答案是:使用操作系统的多进程机制。也就是我们常说的,多路复用API,多路复用API本质上是对操作系统多路复用功能的封装。

什么是操作系统的多进程呢?

简单来说就是Copy On Write。当父进程对redis页面进行修改时,会先把这个页面的数据复制一份,然后在这个副本上进行修改,子进程读取的还是原来的页面,并且这个页面不会被修改,所以子进程可以放心的处理自己的事情,进行数据持久化操作。这就是为什么RDB持久化也叫做快照的原因。

接下来还有一个问题要搞清楚,就是linux系统的父子进程的关系,因为我们还没有很好的解释:单线程的linux如何解决并发请求。

一个线程只能属于一个进程,但是一个进程可以fork生成多个子进程,这就是redis单线程能够处理多个并发请求的原因。

也就是说,redis的设计者,把多线程的复杂性,转给了操作系统。在redis层面,无需考虑多线程问题。

相关文章

网友评论

      本文标题:redis是单线程的,如何处理并发请求?

      本文链接:https://www.haomeiwen.com/subject/lfqvtctx.html