企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## Redis的速度是很快的,基于以下原因: Redis是单进程单线程运行,因此不存在线程切换造成的资源浪费(但是也是缺点,如果命令执行缓慢就会造成阻塞); Redis数据是是安装在硬盘上,但是运行数据是在内存中,访问速度远大于硬盘,避免大量IO。 Redis 服务器是基于高效的IO多路复用,效率高。  ## Redis 服务器是一个事件驱动程序, 服务器处理的事件分为时间事件和文件事件两类。 文件事件:Redis主进程中,主要处理客户端的连接请求与相应。 时间事件:fork出的子进程中,处理如AOF持久化任务等。 **由于Redis的文件事件是单进程,单线程模型**,但是确保持着优秀的吞吐量,IO多路复用起到了主要作用。简单解释多路复用就是一个线程监听多个套接字,谁先有读写事件就处理谁,减少线程切换开销和IO阻塞,以提高CPU利用率。 Redis访问过程如下: ![](https://img.kancloud.cn/ac/42/ac4279257bfbc410db148f3e865fe631_720x290.png) I/O多路复用展示: ![](https://img.kancloud.cn/2c/93/2c93e247667ed8dc2337cd0eef54c06a_720x219.png) 上面提过,Redis是基于I/O多路复用,然后用C实现的。当接收到请求后,也说过Redis服务器是个事件驱动程序,然后Redis的文件事件分派器就会一直轮询,C源码就是方法aeMain()方法内部一直轮询,然后调用aeProcessEvents(),这个方法就是去调用事件处理器,适配具体的handler(连接应答处理器、命令请求处理器),在适配handler过程中会调用acApiPoll()方法进行系统的适配(Windows、Linux等),然后Linux中调用的是ae_epoll.c文件,也就是这样的过程基于事件实现IO多路复用,效率是很高的。