作者:z小赵
★一枚用心坚持写原创的“无趣”程序猿,在自身受益的同时也让朋友们在技术上有所提升。
最近有朋友说,能不能写一篇关于 Redis 线程模型的文章,面试被问到不会导致比较尴尬;今天就来给安排上。
Redis 事件是什么?
不是讲线程模型吗?和事件有什么关系?实际上 Redis 是一个事件驱动程序;大白话理解一下:就是通过事件的方式来运行 Redis 的。比如客户端向服务端发起一个 get 请求,在做好了建连、发送请求、响应请求、关闭连接等准备操作后,就触发了一个事件。所以在了解线程模型之前,先来看看事件。
Redis 的事件分为两种,分别是文件事件和时间事件两种。
什么是文件事件?
文件事件是 socket 的一个抽象;客户端发送请求到服务端,会先建立连接,然后通过连接发送命令请求,其中每个连接就是一个 socket。对于一个 Redis 服务端,在同一时刻会有很多 socket 连接,每一个 socket 都可以理解成一个文件事件。
每产生一个文件事件后,就将其交给文件事件处理器去处理,文件事件处理器是由 I/O 多路复用处理器、文件事件分发器、事件处理器几部分组成。