Redis单进程单线程模型

之前已经粗略介绍了Redis的内容,但其实还有几点没详细讲解

本文章只是本人的见解,不一定完全正确。

I/O 多路复用

Redis是单进程单线程的,为什么还说他快呢

其原理和Nodejs差不多,就是通过多路复用技术(我比较喜欢叫异步)

就是当用户连接redis,并发布了一条命令时,Redis不会马上对这条命令进行操作,而是放到列表里,然后Redis会把列表里的命令按顺序执行,执行完成后发回通知

I/O 多路复用其实是系统底层实现的,并不是Redis实现的,Redis只是在系统底层上封装了一层,向上层提供了一个统一的接口,屏蔽了底层实现的细节。


I/O 多路复用


Reactor

Redis 基于 Reactor 模式开发了自己的事件处理器。

这里就先展开讲一讲 Reactor 模式。看下图:

“I/O 多路复用模块”会监听多个 FD ,当这些FD产生,accept,read,write 或 close 的文件事件。会向“文件事件分发器(dispatcher)”传送事件。

Redis的Reactor

文件事件分发器(dispatcher)在收到事件之后,会根据事件的类型将事件分发给对应的 handler。


所以说 Redis 是一个事件驱动的程序,期间发现,Redis 没有 fork 过任何线程。所以也可以说 Redis 是一个基于事件驱动的单线程应用。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容