Redis事件和整体框架

Redis服务器是事件驱动程序,主要处理两类:
文件事件
时间事件

文件事件

基于Reactor模式使用IO多路复用来监听多个套接字,并且根据套接字的事件分配相应的事件处理器。
IO多路事件都会放在一个队列中,并发时,有序执行。

时间事件

服务器将所有时间事件都放在一个无序链表。
当时间事件执行器运行时,会遍历整个链表,查找已经到达的时间事件,并且调用相应的事件处理器。

常见时间事件
  • 更新服务器状态
  • 关闭过期连接
  • AOF或者RDB
  • 集群同步
  • 测试从服务器连接
时间事件可能会晚一些执行

main(){
while{
文件事件
时间事件
}
}
创建时间事件会将其加入到链表中,但是只有当本次循环的文件事件执行完才会执行时间事件。
时间事件中有一个最重要的循环任务:serverCron默认每100ms运行一次,用来执行:

  • 更新服务器时钟
  • 更新服务器状态(LRU,执行命令次数等)
  • 管理和客户端的连接
  • AOF和RDB持久化

Redis是用客户端-服务器cs框架的

当服务器和客户端之间的socket因为客户端的写入而变得可读时,服务器将调用命令处理器来执行以下操作:
读取套接字,并且取出其中命令,放入缓冲区,调用相应的命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值