redis学习笔记-线程模型

redis是一个单线程的IO复用模型,封装了一个简单的 AeEvent 事件处理框架,主要实现方式是 epoll ,kqueue 和 select
文件事件处理器是redis线程模型的核心,主要包括四个部分:
1.多个socket(多个连接,客户端——>服务端)
2.IO多路复用(可以理解为epoll ,kqueue 和 select)
3.文件事件分派器(绑定一个队列)
4.事件处理器(连接应答处理器、命令请求处理器、命令回复处理器)

客户端向server的socket建立连接,会生成一个AE_READABLE事件,IO多路复用程序监听到事件后,将事件放入队列。文件事件分派器从队列中获取事件,然后把事件交给对应的文件事件处理器进行处理,文件事件处理器是单线程的,所以 Redis 才叫做单线程的模型。

不同的事件处理器分别做了哪些操作呢?

客户端每次会在socket中产生两个事件AE_READABLE和AE_WRITEABLE。
连接应答处理器:将socket产生的AE_READABLE事件跟命令请求处理器关联上。
命令请求处理器:将socket中key和vaule进行对应的内存数据操作。然后将socket的AE_WRITEABLE事件跟命令回复处理器关联起来。
命令回复处理器:将客户端操作的结果返回,将socket的AE_WRITEABLE事件与命令回复处理器解除绑定。

redis的单线程模型大概就是这样,从Redis 4.0 开始,会有一些异步线程,用于处理一些耗时操作。实现惰性删除和异步 AOF等等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值