面试题答案
一键面试事件类型
- 文件事件:Redis 基于 Reactor 模式开发了自己的网络事件处理器,这个处理器被称为文件事件处理器。它负责处理客户端的套接字连接、读写等网络 I/O 相关操作。文件事件分为可读事件(当套接字有数据可读时触发)和可写事件(当套接字可进行写操作时触发)。
- 时间事件:时间事件用于执行定时任务,比如服务器周期性的操作,如检查数据库的过期键、进行持久化操作等。时间事件分为定时事件(在指定的时间点执行一次)和周期性事件(每隔一段时间就执行一次)。
优先级排序
在 Redis 的事件调度中,文件事件的优先级通常高于时间事件。这是因为文件事件主要处理客户端的请求和响应,与服务的实时交互密切相关。如果不能及时处理文件事件,会导致客户端长时间等待,影响服务的响应性能。而时间事件大多是一些后台的周期性任务,虽然重要,但对实时性要求相对较低。所以在事件调度时,Redis 会优先处理文件事件,在文件事件处理完且没有新的文件事件时,才会去处理时间事件。