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

疑问:

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


下面是我个人的理解。

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


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


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


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

扫描二维码关注公众号,回复: 6439046 查看本文章


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


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

猜你喜欢

转载自blog.csdn.net/weixin_34146410/article/details/90806937