之前已经粗略介绍了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 是一个基于事件驱动的单线程应用。