Redis原理之网络模型笔记
2023-12-18 20:35:02
目录
Redis采用单线程模型,这意味着一个Redis服务器在任何时刻都只会处理一个请求。Redis的网络模型涉及到阻塞I/O(Blocking I/O)、非阻塞I/O(Non-blocking I/O)、I/O多路复用(I/O Multiplexing)、信号驱动I/O(Signal-driven I/O)以及异步I/O(Asynchronous I/O)。
1. 阻塞IO
- 在阻塞I/O模型中,当一个I/O操作发生时,整个进程会被阻塞,直到I/O操作完成为止。
- 在Redis的网络模型中,当执行一次命令或操作时,可能会涉及到与客户端的通信,这时Redis的主线程会被阻塞。
?2. 非堵塞IO
- 在非阻塞I/O模型中,当一个I/O操作发生时,进程不会被阻塞,而是继续执行其他操作。进程需要通过轮询来检查I/O操作是否完成。
?3. IO多路复用
- ?I/O多路复用允许单一的进程或线程管理多个套接字。通过select、poll、epoll等机制,可以同时监听多个套接字上的I/O事件。
- Redis使用了I/O多路复用来同时监听多个客户端连接的事件,这样单个线程可以处理多个连接。
?3.1 select
?3.2 poll
3.3 epoll
epoll
是Linux提供的最新、最高效的I/O多路复用机制。它引入了三个系统调用:epoll_create
(创建一个epoll
实例)、epoll_ctl
(注册或注销文件描述符)和epoll_wait
(等待事件的发生)。
?
?4. 信号驱动IO
5. 异步IO?
特点: 异步I/O允许一个I/O操作启动后,应用程序可以继续执行其他任务,而不必等待I/O操作完成。当I/O操作完成时(就绪和数据拷贝完成),应用程序会得到通知。
?6. Redis是单线程还是多线程
?
文章来源:https://blog.csdn.net/qq_43649937/article/details/135066781
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!