事件
两种事件:
- 文件事件 绑定客户端,同时处理多个客户端请求
- 时间事件 服务器的常规操作,周期或者单次任务
文件事件
读和写两种:
- 读 客户端连接则绑定事件,陷入等待,客户发送请求且请求不阻塞则进入就绪状态
- 写 客户端发送请求之后,等待返回给其关联写事件,等待,返回完成之后就绪
时间事件
单链表的格式,如下:
public class TimeEvent {
private long when; // 执行的时间点
private Method timeProc;// 具体处理操作
private TimeEvent next; // 下一个事件
}
会有两种:
- 单次 timeProc返回一个非整数值,则单次,执行完删除
- 周期 返回整数值,跟新when属性,会在下一个时间点再次被处理
事件事件的应用场景:
- 更新服务器的各种监控信息,CPU,内存等
- 过期键清楚
- 清理失效客户端
- AOF或RDB持久化
- 同步主从
- 主从心跳监测
事件调度上,文件要比时间的优先一些,不会抢占,依次执行