Redis的事件处理机制是怎样的?

2026-05-27 15:550阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2309个文字,预计阅读时间需要10分钟。

Redis的事件处理机制是怎样的?

Redis的事件处理机制与单线程模型,不同于Nginx的多进程和多线程,也与golang的多协程不同。工作的人那么少,为什么Redis能这么快呢?

原因在于epoll的多路复用技术。这里重点要说的是epoll。

Redis的事件处理机制是怎样的?

redis的事件处理机制

redis是单进程,单线程模型,与nginx的多进程不同,与golang的多协程也不同,“工作的工人”那么少,可那么为什么redis能这么快呢?

epoll多路复用

这里重点要说的就是redis的IO编程模型,首先了解下

为什么要有多路复用呢?

如果没有多路复用,一个线程只能监听一个端口的一个连接,这样这个效率比较低。当然我们有几种办法可以破除这个,一个是使用多线程模型,我们还是监听一个端口,但是一个请求进来,我们为其创建一个线程。但是这种消耗是比较大的。所以我们一直想办法,有没有办法一个线程监听多个端口,或者多个一个端口的多个连接(fd)。

这里再说说fd, 文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作(包括网络socket操作)的系统调用都通过文件描述符。每个连接请求上来,都会创建一个连接套接字,一个连接使用一个连接套接字。

对于监听端口,我们会有一个监听套接字,对应监听fd。我们所有的监听业务都是从监听这个套接字开始的。

阅读全文
标签:事件处理

本文共计2309个文字,预计阅读时间需要10分钟。

Redis的事件处理机制是怎样的?

Redis的事件处理机制与单线程模型,不同于Nginx的多进程和多线程,也与golang的多协程不同。工作的人那么少,为什么Redis能这么快呢?

原因在于epoll的多路复用技术。这里重点要说的是epoll。

Redis的事件处理机制是怎样的?

redis的事件处理机制

redis是单进程,单线程模型,与nginx的多进程不同,与golang的多协程也不同,“工作的工人”那么少,可那么为什么redis能这么快呢?

epoll多路复用

这里重点要说的就是redis的IO编程模型,首先了解下

为什么要有多路复用呢?

如果没有多路复用,一个线程只能监听一个端口的一个连接,这样这个效率比较低。当然我们有几种办法可以破除这个,一个是使用多线程模型,我们还是监听一个端口,但是一个请求进来,我们为其创建一个线程。但是这种消耗是比较大的。所以我们一直想办法,有没有办法一个线程监听多个端口,或者多个一个端口的多个连接(fd)。

这里再说说fd, 文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作(包括网络socket操作)的系统调用都通过文件描述符。每个连接请求上来,都会创建一个连接套接字,一个连接使用一个连接套接字。

对于监听端口,我们会有一个监听套接字,对应监听fd。我们所有的监听业务都是从监听这个套接字开始的。

阅读全文
标签:事件处理